设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为___?
这同编译器的处理方法有关。
按语法,
int n,i;
printf("%d
", (n=i=2,++i,i++) );
得 3。
计算顺序:
这是逗号表达式,逗号表达式的结果 用 最右面一个表达式的结果。
(1)n=i=2; n得2,i得2
(2)++i; 前缀加,表达式里要 先增1再使用,i 变 3
(3)i++; 后缀加,表达式里用原值,出了表达式后才增1。所以 i 不变,等于 3。
逗号表达式 的结果 用 最右面一个表达式的结果,也就是 (3)的结果。
所以 答案 是 3,不是 5 。
可能和编译器有关,编译时入栈顺序的问题。
windows vs2010下测试,你的理解是对的
int main(){int i;i =2;int dd = ++i+i++;printf("dd = %d i = %d
",dd,i);i =2;int ww = ++i*i++;printf("ww = %d i = %d
",ww,i);
}
运行结果
要注意赋值表达式的值是左边操作数的值,逗号表达式是右边操作数的值
所以该表达式是i++的值 i++是先得出i的值再+1的 所以就是求前面i的值 很明显通过前面计算i=3了
即表达式的值应该也为3吧。 不过有些编译器也可能输出4 这样的表达式很没意义
n和i都是2
++i 就是先给 i 加个1;然后在使用 I i=3
i++就是先使用 i ;在加 1 i=4
int n, i, temp;
n=i=2;
temp = ++i; // temp = 3, i = 3
temp = i++; // temp = 3;
// i = 4
没看明白你问题的意思,不过
++
在变量前面和在后面的优先等级是不一样的。
n=2,i=3;
若变量已正确定义为int型,要给a、b、c输人数据,正确的输入语句是...
【答案】:D D。【解析scanf是键盘输入语句,%d是打印十进制文件,&X就是把你从键盘输入的值赋给X后面以此类推,因此正确答案为D。
设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为___?
所以该表达式是i++的值 i++是先得出i的值再+1的 所以就是求前面i的值 很明显通过前面计算i=3了 即表达式的值应该也为3吧。 不过有些编译器也可能输出4 这样的表达式很没意义
设变量已正确定义为整型,则表达式"n=i=2,++i,i++"的值为___
++i的值 等于i+1 之后的值 即++i=3 ,i=3 i++的值等于i 的值为3
若变量已正确定义为int型。要通过语句scanf("d,%d,%d,",&a,&b,&c...
lz答案好像是c吧 应为scanf中引号里的逗号是你必须要输入的 否则结果会不对的,逗号后面的空格随便几个的;scanf是回车结束输入 如果是 scanf("%c,%c,%c,",&a,&b,&c); 按b输出是乱码;这样是不能在输入的时候加空格等特殊字符的,否则计算机会把他们当成字符串读入;而且这个时候输出应该是...
设变量已正确定义为整型,则表达式(n=i=2,++i,i++)的值是多少
逗号表达式 取最右侧的值。i=2;++i变为3 i++先使用,后改变i的值。结果为 3.
设变量i已正确定义为整型,且初值为0,则printf("%d,%d",++i,++i)的输...
2,1 已定义i=0,当用printf(右结合性)输出时,系统先运算右边的++i(在输出之前先进行++运算,区别于i++)得到结果1,给第二个%d;然后再进行一次++i运算得到结果2,给第一个%d。所以最终结果输出的是2,1.
...则执行语句"i---i;"后,i的值为 _2__ 2、若变量已正确定义并...
i---i;是错误表达式,它只执行i--;并不执行-i,所以结果是2。A和B都是正确的表达式。A就不说了,很常见;B是逗号表达式,可分为逗号前后两个表达式来理解,都是正确的。
若变量已正确定义并赋值,表达式___不正确。
我认为C不正确:&&是逻辑运算符号,要求左右都要有变量或常量,结果左边没有错 A:位逻辑与运算式 B:位逻辑异或运算式 D:逗号表达式
若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )。_百...
【答案】:B A选项中不能将变量Y赋给表达式,c选项中错误与A选项一样,D选项中强制类型转换表达式应写成(double)x/10。
若以下选项中的变量已正确定义,则正确的赋值语句是A.x1=26.8%3; B.1...
【答案】:C 在正确的赋值语句中,赋值符号的左边不能为常量或表达式,而右边不能为变量或表达式。从题目来看,选项A中赋值符号的右值为表达式,明显是错误的;选项B中,左值为表达式,也明显是错误的。在选项D中,表达式是x4=1+2=3,由于=号运算符的结合方式是自右向左结合,那么,该表达式先执行...
钮径头风:[答案] 等于3 ++i的值 等于i+1 之后的值 即++i=3 ,i=3 i++的值等于i 的值为3
乐都县13232503708: 设变量定义为整型,则表达式n=i=2,++i,i++的值为5 - ?
钮径头风: 这个是逗号表达式(n=i=2,++i,i++) 先计算++i,得到i=3,再计算i++的值也为3,最后输出的是i++的值为3
乐都县13232503708: 设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为 - --? - ?
钮径头风: int n, i, temp; n=i=2; temp = ++i; // temp = 3, i = 3 temp = i++; // temp = 3;// i = 4
乐都县13232503708: 设变量已正确定义为整型,则表达式"n=i=2,++i,i++"的值为 - -------- - ?
钮径头风: 等于3 ++i的值 等于i+1 之后的值 即++i=3 ,i=3 i++的值等于i 的值为3
乐都县13232503708: c语言题目 设变量正确定义为整型,则表达式n=i=2,++i,i++;的值为 - -- - ?
钮径头风: 1楼猜想正确,原因如下:Char *p[]={“BooL”,”opk”,”H”,”sp”}可以看作二维数组,i此时为行指针.按%c输出i[3]得s,指针移动两行,指到i[1],输出o
乐都县13232503708: 设变量以定义为整型,则表达式n=i=2,i=n+1,i+n的值为? n的3从哪里来的??? - ?
钮径头风: n=i=2; //n赋值为2,i赋值为2 i=n+1; // n加1的结果赋值给i,即i=2+1=3 i+n //相当于3+2,结果是5
乐都县13232503708: 改变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】. - ?
钮径头风: //值为3指的是(++i)和(i++)这两个表达式,而当这个表达式运算完后i将变为4,请将下一段程序运行测试#include "stdio.h" main() { int t,n,i=2; t=++i; n=i++; printf("t=%d,n=%d,i=%d",t,n,i); }
乐都县13232503708: 问几道C语言中的题目 - ?
钮径头风: 对于第一题:我认为应该如下#include "stdio.h" main() { char a; int b; a=getchar(); scanf("%d",&b); a=a-'A'+0; b=b*2; printf("%c %d",a,b); }对于第二题:在scanf函数中,符号*表示在本项读入后不赋值给相应的变量,抑制本次的输入,...
乐都县13232503708: 求c语言高手 - ?
钮径头风: (1)2(2)1(3)4.5(4)200,10(5)x%10( 6 ) 6(7)1(8)5(9)a=a-(a+b)(10)3
乐都县13232503708: 设变量已定义为整型、则n=i=2,++i,i++的值为多少、?
钮径头风: n是2,i是4.