我有一些代码要分析,我不明白为什么这个表达式总是给出相同的结果,这个例子中的字母“b”。

unsigned char ucVal2;
ucVal2 |= 0x62;

我一直认为当你不定义一个变量时,它的值是不确定的。。
所以,在本例中,我假设ucVal2的值应该是某物或0x62,但是执行总是显示ucVal2是0x62,就像某物总是0x00一样。

最佳答案

那可能只是运气。或者您的特定编译器和/或操作系统可以保证内存初始化为0,即使C语言本身没有。
根据标准,ucVal2的值未定义,并且上述代码不可移植。像这样使用|=操作符并没有什么特别之处,它在某种程度上影响了未定义的事实。

关于c - ANSI C(1989):是否可以使用OR初始化变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21239091/

10-10 21:21