1 c
int main( void )
{
int a, b,c ;
a = -3 - - 3 ;
b = -3 - - ( - 3 ) ;
c= -3 - - - -3;
printf ( "a = %d b = %d c=%d", a, b ,c) ;
}
Run Code Online (Sandbox Code Playgroud)
这是一个问题,找到答案我只是运行程序并找到结果
a = 0 b = -6 c = 0
但我不应该在回答这些问题时使用电脑.所以这是一个问题:无论如何,任何' - '标志都有编译器会让它正确吗?有一对支撑'b'而不是'c',显然没有区别.有人请解释一下吗?
谢谢.
每个一元都-
否定了它之前的表达,并从右到左结合.此外,它具有更高的优先级,-
即从左到右绑定的二元运算符.所以这:
c= -3 - - - -3;
Run Code Online (Sandbox Code Playgroud)
是相同的:
c= (-3) - (- (- (-3)));
Run Code Online (Sandbox Code Playgroud)
是的,这些表达式的结果已经明确定义.
另一方面,如果您正在处理preincrement或postincrement运算符,--
或者++
尝试在同一个表达式中多次在同一个变量上使用它们,那么当您遇到未定义的行为时.
归档时间: |
|
查看次数: |
101 次 |
最近记录: |