问几个C语言的简单问题!

来源:百度知道 编辑:UC知道 时间:2024/05/11 19:07:21
Q1:什么是溢出啊?
Q2:程序
main ()
{ int i=3,k;
k=(i++)+(i++)+(i++)
printf("i=%d,k=%d",i,k);
int i=3;
k=(++i)+(++i)+(++i);
printf("i=%d,k=%d",i,k);
int i=3;
k=(++i)+(i++)+(++i);
printf("i=%d,k=%d",i,k);
}
为什么第2个结果 k=18 而不是12呢?是怎么算的啊?
同样为什么第3个K=15呢?

Q3:选择题!

int x=1,y=3 经过下列计算,x的值等于6的正确选项是()
A:x=(x=1+2,2*x) B: x+y>2?6:5
C: x=9-(--y)-(--y) D: x=y*4.8/2
这个选择题 我在BD之间不知道选哪个?还是有2个正解呢?
请高手们不要鄙视小弟,写下解题思路!!谢谢拉!
谢谢你的回答!
那么 1: 溢出之后有什么后果呢
比方说 能容下10 但是有11个数。。那么溢出之后是不是只 溢出1 而保留10呢/
2:懂了
3:他不会把 y*4.8 把4.8先转换为4吗?我一直是这么认为的!

Q3好象是选A,C和D得7吧

1、溢出,一盆水,倒满了再倒,就会溢出的;计算机也一样,本来只能容下10个数,你非要给他11个,就叫做溢出。
2、这个和编译器有关系了。可能换一个编译器就会不是这个值,你的这个是小括号优先级最好,所以先算小括号内的,都加1之后,再相加。
3、选B了;这个不用说了
D中,先y*4.8,会自动向高级转的算出的值是14.4
再除以2,等于7.2,赋值又要向低级转换为7。

Q3选D
3*4/2=6