C语言中如何判定int和long型等变量是否赋值
副标题#e#
博主这段时间在写一些C措施的代码,由于以前对C不是相识许多,故碰着许多瓶颈,虽然,个中也有许多 有趣的要领可以操作以办理这些困难,下面这个问题就是博主碰着的一个贫苦。
声明白 int ,long 型等局部变量,在操作一些要领给这些变量赋值之后,想判定这些变量是不是真的被赋初值了,怎么办?
虽然,假如你不赋值给局部变量,这样会导致整个措施的瓦解,因为,它的内容被系统指向了垃圾内 存。
下面我们看一段代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> int globle_value; int my_sum(int value1, int value2); long my_sub(long value1, long value2); int main(void) { int auto_value_int; long auto_value_long; auto_value_int = my_sum(15, 9); auto_value_long = my_sub(12587, 22587); printf("globle_value : %d\n", globle_value); printf("auto_value_int : %d\n", auto_value_int); printf("auto_value_long : %ld\n", auto_value_long); system("PAUSE"); return 0; } int my_sum(int value1, int value2) { return value1 + value2; } long my_sub(long value1, long value2) { return value2 - value1; }
说明:
我首先界说了一个全局变量,虽然,这会由系统自动初始化为0,可是两个差异范例的局部 变量并没有初始化,而是通过两个函数挪用赋的值。但是,此刻,想一个问题,两个函数挪用是不是执行乐成 了呢?假如不乐成,照旧没有到达我所想要的结果,这怎么去判定呢?
开始,博主也是没想到好的解 决步伐,也查阅别人怎么去做,没有太多的收获,但是,博主想到了C 语言中的一个函数–sprintf ,它可以 把差异范例变量存放到字符数组中,我们之后可以判定,字符数组是否为空就可以了。
#p#副标题#e#
下面是颠末修 改了的代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> int globle_value; int my_sum(int value1, int value2); long my_sub(long value1, long value2); int main(void) { int auto_value_int; long auto_value_long; char temp[20] = {0}; auto_value_int = my_sum(15, 9); auto_value_long = my_sub(12587, 22587); printf("globle_value : %d\n", globle_value); sprintf(temp, "%d", auto_value_int); if (strcmp(temp, "") != 0) { printf("auto_value_int : %d\n", auto_value_int); } sprintf(temp, "%ld", auto_value_long); if (strcmp(temp, "") != 0) { printf("auto_value_long : %ld\n", auto_value_long); } system("PAUSE"); return 0; } int my_sum(int value1, int value2) { return value1 + value2; } long my_sub(long value1, long value2) { return value2 - value1; }
运行截图如下所示:
由此,办理了问题。