回 帖 发 新 帖 刷新版面

主题: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语言规定的,所以后面变化了!谢谢大神!


回复列表 (共1个回复)

沙发

你的理解是在说++运算符,而取反,移位并不改变变量本身的值。所以不管你怎么做a都不变。

我来回复

您尚未登录,请登录后再回复。点此登录或注册