c=a+++b是什么意思?
What does the operation c=a+++b mean?
下面的代码把我弄糊涂了
int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);
我期望输出是3,5,8,主要是因为a++意味着2 +1等于3,而3 + 5等于8,所以我期望是3,5,8。结果是3 5 7。有人能解释一下为什么会这样吗?
解析为c = a++ + b
, a++
表示后增量,即取a
的值计算a + b == 2 + 5
后的增量。
请,永远不要写这样的代码
maximum Munch Rule适用于这样的表达式,根据该规则,表达式解析为:
c = a++ + b;
也就是说,a
是后加的(a++
),所以a
的当前值(后加之前)是+
对b
的操作。
a++是post递增,即表达式取a和的值,然后加1。
C = ++a + b会达到你的预期。
这是一个糟糕的编程风格的例子。
这是相当不可读的,但是它增加了a
,所以它将a
的当前值求和为b
,然后增加a
!
a++在表达式之后求值。
c = ++a + b;会给你想要的。
后增量操作符a++在表达式中计算a的值后改变a的age值。因为a的初始值是2,这就是用来计算c的;
a++ + b…它给出结果7,之后a的表达式值更新为3,因为后增量操作符
根据最长匹配规则,在编译器词法分析阶段将其解析为++ ++ b。因此结果输出。
这里c= a+++b;均值c= (a++) +b;即后增量。在a++中,更改将发生在打印a, b和c的下一步中。在++a中,即前缀递增,更改将在同一步骤中发生,它将给出8的输出。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?