C中代码片段的解释

时间:2013-04-14 09:23:30

标签: c int operators assignment-operator postfix-operator

我在某个地方看到了这段代码,但无法理解它是如何工作的:

#include"stdio.h"

int main() {
  int j = 1;
  + j += + j += + j++;
  printf("%d",j);
  return 0;
}

输出:

6

请解释此代码段的工作原理。

2 个答案:

答案 0 :(得分:1)

您的程序无法编译,因为您没有提供lvalue作业。

GCC显示以下错误消息

lvalue required as left operand of assignment

在你的程序中,你使用了短手赋值运算符,

例如,考虑代码,

a+=b;

手段,

a=a+b;

但你使用它们的方式不正确。

答案 1 :(得分:1)

我希望你能理解我是否以其他方式编写相同的片段来解释它

注意我的观点+变量只不过是一个正变量而变量是负数

现在查看您的代码段

#include"stdio.h"

int main() {
int j = 1;
+ j += + j++;// i.e "j+=j++;" which is "j=j+j; j= j+1;"
//now j = j+j "1+1" "j=2" and post increment then j=j+1 "2+1" "j=3"
+j+=+j;//which is j+=j or j=j+j
//hence j=3+3 i.e 6
printf("%d",j);//j=6
return 0;
}
相关问题