2道c++题目

来源:百度知道 编辑:UC知道 时间:2024/05/18 04:55:40
第一题
main()
{ int y=10;
do {y--;} while(--y);
cout <<(y--)<<endl;
}
输出结果是什么? 为什么?

第二题
struct node
{ int val;
struct node *next;
};
struct node sa[3]={{5},{7},{9}},*sp;
sa[0].next=sa+1;sa[1].next=sa+2;sa[2].next=NULL;
sp=sa;
则下面哪个表达式的值是6?为什么?

a.++sp->vak b.sp->val++ c.(*sp).val++ d.sp++->val
sa[0].next=sa+1;sa[1].next=sa+2;sa[2].next=NULL;
的作用是什么?看不明白..谢谢

有关++y y++ --y y--
只要清楚:他们都是表达式,表达式的值才能代表他们;
++y相当于 a=y+1;y=y+1;
y++ a=y;y=y+1;
--y a=y-1;y=y-1;
y-- a=y;y=y-1;

sa[0].next=sa+1 的意思是sa[0].next这个指针指向sa数组的第二个位置,即指向sa[1]

第一题 输出结果为0
因为while(--y) 当y自减为零时就会退出循环, cout<<(y-- ) <<endl; 则是先输出零然后y再自减, 所以y最后的值是-1

第二题 答案是a
a的结果是六 b c结果是5 d结果是7 主要是++的位置不同导 致输出结果不同