以下代码让我感到困惑
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
Run Code Online (Sandbox Code Playgroud)
我预计输出为3,5,8,主要是因为a ++意味着2 + 1等于3,而3 + 5等于8,所以我预期3,5,8.事实证明结果是3,5,7.有人可以解释为什么会这样吗?
我试着搜索这个,但找不到任何结果.
c=a+++++b无法编译的代码(gcc),而for c=a++ + ++b,它编译成功.c=a+++ ++b也有效.c=a++ +++b失败.
为什么空白在这里产生了这样的差异?或者我错过了C的重要概念?
在printf语句中i+++j,它总是被视为i++ +j?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
int i =5,j= 6, z;
z=i^j;
printf("%d",i+++j);
return 0;
}
Run Code Online (Sandbox Code Playgroud) int x = 2;
int y = 5;
int z = x +++ y;
printf("%d",z);
Run Code Online (Sandbox Code Playgroud)
VC++和GCC都提供7作为输出.我的困惑在于,它可能是x ++ + y或x + ++ y.这个定义了吗?