关于单片机C语言的问题,为什么这个函数中变量dat没有赋初值,但是却在后面被直接使用了?是不是因为

关于单片机C语言的问题,为什么这个函数中变量dat没有赋初值,但是却在后面被直接使用了?是不是因为什么硬件上的原因?

定义时候没有赋值,初始化为0.
dat | = mask,这一步就是改变dat的值的,是拿0与mask按位或运算,之后把值给dat追问

谢谢您,明白了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-10

变量在后面会被赋值,所以不需要初始化。并不是硬件原因。

if (I2C_SDA == 0) 
    dat &= ~mask;
else
    dat |= mask;

无论进哪个分支,都会被赋值,所以没必要定义的时候初始化。

追问

可是在执行dat=dat&(~mask)操作时,dat难道不需要初值吗?

追答

看错了,不好意思,未初始化,默认为0.

追问

谢谢您了

单片机C语言 void SPI_Write(uchar dat)中的uchar dat什么意思,在程序...
uchar dat 说明参数dat是无符号字符型,前面应该有过宏定义

问几个C语言里很多人没注意过的问题
3.你这句话是正确的。只要fp正确无误的打开了一个文件,而且文件中确实有数据,那么fscanf就一定会为你读入数据,只不过要记得fscanf这个函数遇到空格、回车等就会终止,所以不一定会读文件读到哪。4.很遗憾,C标准并没有为int型数据指定几个字节,各编译器都有自己的实现。在MSVC上默认int为4字节,...

单片机C语言数组赋值求助
第二种就是在程序执行中赋值,即,没有经过初始化赋值;那么此时对它的赋值只能是逐个赋值,而不能像初始化赋值那样对整体来赋值了。你先定义了数组ucharfirst[5];即没用有初始化赋值,所以是程序执行中的赋值,故只能逐个对它赋值了。即只能用first[0]=a,first[1]=b,这样来赋值了。明白了吧,呵呵。 已赞过 ...

单片机C语言小疑问
那为什么用K=248而不是250呢,因为在一个循环(第三个for循环),即248个对变量k的DJNZ后,还会有一个对j的DJNZ指令,还有一个给K赋初值的指令,这两个指令是三个时钟周期,即3us,所以k是2us减一,j 是2*248+2=1=499us减一,i是20*499+2+1=9983us,总的时间是9983*20+1=1999661us=0.1999661...

定时器延时问题(51单片机,c语言)
你的这两个函数void delayms(uint)和void display(uchar,uchar,uchar,uchar)我可以肯定的告诉你,没有问题。你的这个程序其实就是想显示0000~5959之间的数,而且这个数是每20秒+1顺序递增的。之所以没有任何反应,那是你的主程序没有挂起,也就是在while(1)里没有没有大括号,程序执行一次就结束了...

问个关于C语言中函数形式参数的问题
1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量...

51单片机静态局部变量问题>?
return b;}还有一种变量,就是在函数里面定义,但是加了static前缀的,在离开该函数后他的值任然会保留(一直占用内存空间)。给个例子给你:\/*串口接收中断 *\/void serial_int(void) interrupt 4 { static unsigned char i=0;static unsigned char num=0;static unsigned char rx_hlf=0;unsigned...

c语言单片机开发环境中"&"是啥意思啊??请各位大虾们帮帮小弟
则结果为真;否则为假。所以,testb = dat & (就是这个) amp; 0x01; 的意思是:amp固定为0x01,每次取dat的最低一位,若最低一位是1,则testb为1;若最低一位是0,则testb为0.你没有定义amp这个变量呀!两种办法解决:1、#define amp 0x01 2、int amp=0x01;...

一个关于51单片机串口数据发送问题(c语言)?
你的问题是刚判断完帧头就处理数据了 应该判断完帧头后继续接受3个字节的数据再处理 include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intint zhibi_js[40], i0, com_dat;unsigned char a,b,c,flag;uchar Crcl,Crch;const uint code CrcTable[8*...

C语言中 在一个函数中用 static修饰的变量,还能给它赋上新值吗?
可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。像在VB,C#,C,C++,Java,PHP,Objective-C,JavaScript中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、...

相似回答