1.以下代码输出结果是 2 5
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int *ptr = (int *)(&arr + 1);
printf("%d %d\n", *(arr + 1), *(ptr - 1));// 2 5
system("pause");
return 0;
}
一维数组名取地址相当于行指针,加1加一行
2. 下面的代码执行后,sht的值是 65535
int main()
{
unsigned short sht = 0;
sht--;//sht定义为无符号的16位整数,0减1后应为其能表示的最大值,
//也就是2^16-1=65535
//无符号变量的取值范围0~65535.
printf("%d", sht);//65535
system("pause");
return 0;
}
3.有表达式 ch='B'+'8'-'3',则 ch 表示的字符是 G
int main()
{
printf("%c", 'B' + '8' - '3'); //G
system("pause");
return 0;
}
直接转成ASCII码来算的话,ch=66+56-51=71,再转回去的话71对应的是字符G