1)该程序的执行结果是?
int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
题目解析:首先i会自加两次,i = 7,k = 7 + 7 + 7,k的值为21,i最后在加1,i = 8.
2)关于inline函数的一些知识点
1.使用inline关键字的函数不一定在被调用处展开,因为编译器拒绝为函数体过大的函数做为inline函数
3)设int a=1, b=2, c=3, d=4;,则a<b?a:c<d?c:d表达式的值为?
题目分析:这个题目主要的考点是三目运算发是从右往左运算。先算c<d?c:d值为c,在算a<b?a:c,最后的答案为a即1。
4)该程序输出结果是:
#include <iostream>
using namespace std;
int main(void)
{
const int a = 10;
int * p = (int *)(&a);
*p = 20;
cout<<"a = "<<a<<", *p = "<<*p<<endl;
return 0;
}
程序输出:10, 20,该题考点C++常量折叠。
5)该程序输出结果是
char *str1 = "Hello", str2[] = "Hello"; ,
printf("%d %d", sizeof(str1), sizeof(str2));
这一题有一个陷阱,sizeof(str1)的值应为4,因为他计算的是一个字符串指针的大小,sizeof(str2)的值为6,后面还有一个’\0’。