main()
{
uint8 counter,i;
ENLED = 0;
ADDR0 = 0; ADDR1 = 0; ADDR2 = 0; ADDR3 = 1;
TMOD = 0x01;
TH0 = 0xB8;
TL0 = 0x00;
TR0 = 1;
while(1)
{
if(1 == TF0)
{
TF0 = 0;
TH0 = 0xB8;
TL0 = 0x00;
counter++;
}
if(50 == counter)
{
P0 = number[i++];
counter = 0;
}
if(i == 16)
{
i = 0;
}
}
}
上面这个程序中,count和i都未赋初值,那后面的++计算就直接把他们当做0加一么
那这个程序应该没问题吧
追答当然有问题了,counter,i 未初始化就使用了。
追问这样啊,我是看个教学视频,程序就这样,下载到单片机上也能正常运行
追答能正常运行并不代表就一定没有问题,基本上违反语法要求的代码都有不同程度的问题,只是并不是都能很容易的发现罢了。必然性和偶然性的问题。
追问谢谢了哈。了解,代码的世界千奇百怪
C语言中,如果定义一个变量,但不对其进行赋值,那么输出的这个变量的值...
因为字符变量在内存中存放的是其对应的ASCII值,比如说字符‘a’ASCII值是97。printf("%d",ch);char ch='a';输出结果就是97了。所以对于字符变量也可以这样理解:是单字节的整型变量。所以当然可以对一个字符变量赋值一个1啊。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运...
C语言程序中定义的变量要取得一个初始值一般有哪几种方法?
定义变量取初值:一、不指定:全局及静态变量默认0,局部变量随机值。二、定义同时赋初值:比如int a=1;char str[]="abc";三、定义时未赋初值,在使用前赋值。比如int a;a=1;printf("%d",a);ps:注意函数内静态变量定义给初值和之后赋值是有区别的,静态变量的定义赋初值语句,只在第一次调用函...
C语言问题? 这个X没有赋值,我拿什么去取反?
变量声明之后,没有赋初值,这时里面的内容是无法知道的,不过具体的值跟编译器是有关系的,随机的,好像是存在内存里,把原来的内存里的东西转化为int类型输出了。你可以输出试试
c语言中定义变量不赋初值默认是多少?
如果加了static不给初值,变量的初值是默认的 0。其实不能说不赋初值就不行,对于局部变量,不赋初值的话,其实他里面存的是一个随机的值,谁也不知道他是多少,因此如果没赋初值的情况下就使用它,程序是完全不可控的,如你的图1,直接在while里去判断b了,因此这个while判断是不可控的。【c语言...
为什么C语言的变量未赋初值,其值就为随机数?
这里的随机其实不是指这个变量的值是任意的,只是这个值不是你确定的。如果你了解定义一个变量就是给它分配了一块内存,但是因为没有初始化,所以这块内存里的值你是不知道的,可能是你以前赋过的值,也可能是某些程序运行是产生的,所以一般都认为其值是无法预料的。希望能帮到你,谢谢。
C语言中定义一个变量,不给它赋值。它会有值吗?若有是多少?
没有加static,默认为auto 型,此时,不给初值,变量的初值是随机的。如果加了static不给初值,变量的初值是默认的 0。不能说不赋初值就不行,对于局部变量,不赋初值的话,其实里面存的是一个随机的值,谁也不知道是多少。
c语言里面auto变量的初始值有讲究吗?
C语言标准里面,auto变量的初始值没有做要求,一般是随机的,它分到那块内存原来是什么,还是什么。static变量是静态变量,如果定义时未对其赋初值,编译时系统对数值型static变量赋值为0,对字符型变量赋值空。static的三条重要作用:(1)最主要功能是隐藏。(2)因为static变量存放在静态存储区,第二...
C语言字符数组不赋初值是默认为'\\0'还是随机值
普通数组没有赋初值,默认的数组元素值是随机数,不是0。如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。例子:includeint main(void){ int m = 0;static int n;int a = 5, b = 6, c = ...
c语言的变量如果不付初值,变量的值是0么?
在定义全局变量(关键字是extern)和静态变量(关键字是static)是如果没有显式初始化,c的编译系统会自动将其初始化为0(若是字符类数据则初始化为‘\\0’),其余项局部变量等的初始值是随机值。可以简单的编写程序试一下。
C语言:为什么变量j不赋初值程序就运行失败?
因为你下面j第一次引用的语句是dp[j]=dp[0]。而在这之前对j赋值的语句是写在for循环的if里,如果if不成立,那么j就没有赋值,没有赋值,如果j又没初值,那么就是随机值,那么dp[j] 就可能访问越界。