下面代码的输出是什么?(非常考基础水平的一道题)

 

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(提示:+的优先级优于>>)