#include <stdio.h>
main() {
int pro;
int dot;
int tot;
char prelude[] = "\nNow we shall do some simple mathematics\n\n";
printf("%s", prelude);
pro = 3;
dot = 5;
tot = pro + dot;
printf("%d", tot);
dot += 23;
printf("\n%d\n", tot);
return 0;
}
答案 0 :(得分:2)
因为C不提供自动数据绑定。当您使用赋值运算符(或您的情况下的加法赋值)时,您将在表达式的右侧分配语句的 VALUE 。
variable = statement
表示statement
将计算为某个值,并且此值将根据variable
的数据类型分配给variable
。< / p>
这意味着您要为该变量分配值,而不是实际陈述。
更好地解释一下:
tot = pro + dot;
执行以下操作:
tot
。pro + dot
。pro
,它的计算结果为3.(表示C将替换
赞成3在该声明中)dot
,评估为5。3 + 5
; tot = 8;
tot
。这意味着,转到内存地址
由tot
表示的变量,并写入整数8(in
符合C标准/机器架构)。如果你这样做
dot += 23;
C明白这一点:
dot += 23; // can be translated to `dot = dot + 23;'
像以前一样:
dot
表示8,23表示23。dot = 31;
,意思是写
整数31到dot
的记忆。现在tot
,不受此影响。为什么?因为tot
是你记忆中的一个空间,它保存了值8.它不知道8是通过添加2个其他变量创建的。它只是8.所以改变其他变量不会影响这个变量。
如果您执行dot += 23;
,则表示您正在更改变量dot
的内存,而不是tot
的内存。
您所期待的,称为数据绑定,并且是比C提供的更高级别的功能。