相关疑难解决方法(0)

短路评估是否在C++中得到保证,就像在Java中一样?

在Java中,我使用

if (a != null && a.fun());
Run Code Online (Sandbox Code Playgroud)

通过充分利用短路评估和表达从左到右进行评估?

在C++中,我可以这样做吗?它们是否保证可以跨不同平台和编译器移植?

if (a != 0 && a->fun());
Run Code Online (Sandbox Code Playgroud)

c++ java

26
推荐指数
2
解决办法
9141
查看次数

C编程语言中&&的行为

我是C编程语言的初学者,最近我读过有关Logical AND &&运算符的内容.

我也知道,在C编程语言中,所有非零值都被视为TRUE.

NON-ZERO && NON-ZERO = 1  
NON-ZERO && ZERO = 0  
ZERO && NON-ZERO = 0
ZERO && ZERO = 0  
Run Code Online (Sandbox Code Playgroud)

但是当我处理以下程序时,我没有得到预期的答案.

int main(){  
  int x, y, z;  
  x = y = z = -1;  
  y = ++x && ++y && ++z;  
  printf("x = %d, y = %d, z = %d, x, y, z);  
  return 0;  
} 
Run Code Online (Sandbox Code Playgroud)

我期待着

x = 0, y = 0, z = 0 
Run Code Online (Sandbox Code Playgroud)

但答案是

x = 0, y = 0, …
Run Code Online (Sandbox Code Playgroud)

c operators logical-operators

22
推荐指数
4
解决办法
9764
查看次数

标签 统计

c ×1

c++ ×1

java ×1

logical-operators ×1

operators ×1