c++ - 为什么这个输出?

标签 c++ c arrays

我一直在努力理解以下 C 程序:

#include <stdio.h>

int arr[] = {1,2,3,4};
int count;

int incr(){
 return ++count;
}

int main(){  
   arr[count++]=incr();
   printf("%d %d",count,arr[count]);    
   return 0;
}

程序给出 1 2 作为 output ,我想不通的是为什么 count 的值在这里是 1 而不是 2(因为有两个增量)?

最佳答案

= 运算符的计算顺序在 arr[count++]=incr(); 中未指定,因为两个操作数都试图修改同一个全局变量 count 根据计算顺序,不同编译器的结果会有所不同。

编辑

实际上该行为是未定义(这意味着任何事情都可能发生)因为"the prior value of the variable count is not accessed (only) to determine the value to be stored."

关于c++ - 为什么这个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827707/

相关文章:

javascript - 检查 Angular 数组中的值

c++ - 求和数字递归C++

c++ - 我在让 qwt 小部件与 Qt-Creator 正常工作时遇到问题

c++ - Boost 1.65.1 几何距离策略使用 Visual Studio 2017 编译错误

c - 在数字常量之前预期为 ‘;’

c - 如何实现日志?

C++单例与完全静态对象

java - 在 Java/PHP/Python 框架内运行已编译的 C/C++ 代码中的算法?

python - tcp 套接字,select 告诉可写,但 write() 会阻塞

javascript - 在javascript中将JSON对象添加到多维数组