10道C++输出易错笔试题收集
作者:网络转载 发布时间:[ 2015/1/5 11:16:38 ] 推荐标签:C++ net
下面代码的输出是什么?(非常考基础水平的一道题)
|
char *c[] = {"ENTER","NEW","POINT","FIRST"};
char **cp[] = { c + 3 , c + 2 , c + 1 , c};
char ***cpp = cp;
int main(void)
{
printf("%s",**++cpp);
printf("%s",*--*++cpp+3);
printf("%s",*cpp[-2]+3);
printf("%s
",cpp[-1][-1]+1);
return 0;
}
|
结构体
|
#include <stdio.h>
struct data
{
int a;
unsigned short b;
};
int main(void)
{
data mData;
mData.b = 0x0102;
char *pData = (char *)&mData;
printf("%d %d", sizeof(pData), (int)(*(pData + 4)));
return 0;
}
|
改变string变量的值?
|
#include <iostream>
#include <string>
using namespace std;
void chg_str(string str) {
str = "ichgit";
}
int main() {
string s = "sarrr";
chg_str(s);
printf("%s
", s.c_str());
cout << s << endl;
return 0;
}
|
静态变量的输出
|
#include <stdio.h>
int sum(int a) {
int c = 0;
static int b = 3; // 只执行一次
c++;
b += 2;
return (a + b + c);
}
int main() {
int i;
int a = 2;
for(i = 0; i < 5; ++i) {
printf("%d
", sum(a));
}
return 0;
}
|
返回值加const修饰的必要性
你觉得下面两种写法有区别吗?
int GetInt(void)
const int GetInt(void)
如果是下面的呢?其中A 为用户自定义的数据类型。
A GetA(void)
const A GetA(void)
第二部分:答案详细解析
如下函数,在32 bit系统foo(2^31-3)的值是:
int foo(int x)
{
return x&-x;
}
A:0 B: 1 C: 2 D: 4
答案:C
解释:我只想说注意运算符优先级,注意^是异或而不是幂次方。
运算符优先级
unsigned char i=0x80;
printf("0x%x
", ~i>>3+1);
输出什么?
输出:0xfffffff7(提示:+的优先级优于>>)
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

sales@spasvo.com