关于c语言 #include<stdio.h> main() { int x=3,y; y=(++x)+(++x); printf("%d,%d",x,y); }

++x不是先加1再计算么,两次++之后
y不是应该是这样的么?
y=(4)+(5)
怎么运行出来的结果
x=5,y=10呢?有好心人能帮助我解释下怎么运行的么?
#include<stdio.h>
main()
{
int x=3,y;
y=++x+(++x);
printf("%d,%d",x,y);
}

第1个回答  2011-12-16
由于前面没有专业的,所以给你一些信息。
对于C语言,规定中明确规定了++x中的x=x+1计算的位置,即在使用这个++x之前,语句中的任何位置(语句指" y=++x+(++x); ")。x++同理
而具体情况要根据编译器的情况。一般来说对于intel(AMD)的CPU,一块算++比较快,所以就先一块++了。
但是这个是严格不要用的,因为你控制不了。你要是研究C语言的你就会知道在各种情况下的值,你要不是研究这个的,不要用!

错误的理解:
++x,是一个语句,使用的x是当前值+1,其实是先对x增量(语句中引用此次x之前);
x++,是一个语句,使用的x是当前值,使用后+1;其实是用完x后,语句执行完之前,任何位置都可以。
第2个回答  2011-12-16
由于++操作符优先级大于+,所以先进行两个++操作,再进行+操作
所以y=++x+(++x);等价于
++x; //x=4
++x; //x=5
y=x+x; //y=5+5=10
第3个回答  2011-12-16
语句是一句一句执行的, y=(++x)+(++x); 是一个语句,这个语句执行完了X=5,你没疑问吧,被加了两次嘛。这句执行完了才会返回X的值为5,再加两次为10 ,赋值给y。
y=++x+(++x);和y=(++x)+(++x);一样,++和优先级比+高,加不加括号都一样,只是看上去直观些。本回答被提问者采纳
第4个回答  2011-12-16
先x=3,执行y=++x+(++x);中的第一个++x后x=4,然后是计算第二个++x后x=5。
因为y=x+x;此时x已经为5了,所以y就是5+5就是10了
第5个回答  2011-12-16
++X,x加了1,又加1 所以现在变为5了,如是就成了5+5=10

#include<stdio.h> int main() { int x=1,y; y=(++x)*(++x); printf...
这个问题在不同的编译系统下,结果可能不同。在VC下,x=3,y=9。

#include<stdio.h> main() {int x=3,y=
自增与自减运算符可在变量的左边(前缀)与右边(后缀),运算规则教材上有的,手机打字很麻烦

int x=3; int y; y=(++x)+(++x)+(++x); printf("%d",y); 为什么结果会...
也就是y=(++x)+(++x)=5+5=10 y=(++x)+(++x)+(++x)+(++x)=5+5+6+7 2个以上的都是这个规律

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9 在visual C++6.0编译后结果=9

#include<stdio.h> int main() { int x=3,y; int*pc=&x; y=*pc++...
PC++相当于*(PC++),表示取PC的所指向的值,然后PC增一。所以你的代码相当于给Y赋X的值,然后改变PC的值,PC不在指向X的地址了。我想你的意思应该写成++*PC

#include<stdio.h> int main() { int x=1,y; y=++x*++x; printf("x=...
1,这是因为c99 标准没对一个语句中两个自增做规定,一条语句中两个自增在不同编译器编译结果不同。2, 编译器通常把同一变量放于某一通用寄存器,再把运算结果放于另一寄存器, 在这里显然是x再做了两次自增后放于一个寄存器,然后对其取平方的。

在C语言中 #include<stdio.h> main() {int x,y,z; x=y=1; z=(++x...
z=(++x)+(++y)+(x++)我们拆开写,++x此时x=2 ++y此时y=2 x++运行时这个表达式已经是2了,运行结束后x=3 所以z = 2 + 2 + 2 = 6 所以结果是3,2,6

#include <stdio.h> int main() { int y=3,x=3,z=1; printf("%d%d\\n...
逗号运算符,只取最后一个参数,(++x,y++)其实就是y++,z+2=3,其中++x的值为4,y++的值为3,x,y的值都为4

#include <stdio.h> main( ) { int y=3,x=3,z=1; printf("%d %d\\n...
输出的值分别是(++x,y++)和z+2 (++x,y++)这个是一个逗号表达式,返回值为最右边表达式的值。所以返回的值为y。z+2就是3 所以输出为3 3 这个主要考的是逗号表达式返回值

#include<stdio.h> main() { int y=3,x=3,z=1; printf("%d%d\\n...
++x,x先加1在运算,y++,y先运算在加1

相似回答
大家正在搜