主题:C语言简单问题 取反单目运算符本质啥?
void main(void)
{char a=10;
char b;
b=(~a);
printf("the a is %d ",a);
}
这个输出a是10
void main(void)
{
char a=10;
char b;
b=a>>2;
printf("the a is %d ",a);
}
这个输出a也是10
但是比如 i++;如果i原来是1 则运行后i变2了
谭浩强书上好像没有明确说明:
是不是可以这样理解:b=a>>2;在计算机里面是这样的,a先复制出一份,然后这1份里面的数>>2位,再传给b
b=(~a); b先复制出一份,然后这1份里面的数按位取反,再传给b;
所以数值本身不变,而i++是C语言规定的,所以后面变化了!谢谢大神!