1.若有定义语句:char a='\82';则变量 a()
解答:2,4
3.math.h的abs返回值()


解答:BC
-
说明不合法
-
包含1个字符
-
包含2个字符
-
包含3个字符
解答:B
首先记住的一点是:char只有一个字符,所以不管里面是什么内容,肯定只包含一个字符。
解析:
有一个‘\’,那么首先想到的是转义字符常量,‘\ddd’ 是用八进制数的ASCII码表示一个字符,但是本题中'\82',有一个8,显然已经不是八进制,那么这个时候实际上就'\82'中包含3个字符,分别是‘\’,'8','2',赋值时是将字符'2'给了a(char型变量值为1个字节长度,并从右侧开始运算,)。所以a='2',包含一个字符
有一个‘\’,那么首先想到的是转义字符常量,‘\ddd’ 是用八进制数的ASCII码表示一个字符,但是本题中'\82',有一个8,显然已经不是八进制,那么这个时候实际上就'\82'中包含3个字符,分别是‘\’,'8','2',赋值时是将字符'2'给了a(char型变量值为1个字节长度,并从右侧开始运算,)。所以a='2',包含一个字符
2.下列代码的运行结果是()
int a[]={1,2,3,4};
int *b=a;
*b+=2;
*(b+2)=2;
b++;
printf(“%d,%d\n”,*b,*(b+2));
b首先指向a的第一个元素,*b+=2,表示将第一个元素加2,所以数组a的第三个元素变为3,b+2表示指向数组a的第三个元素,所以*(b+2)将数组a的第三个元素变为2,b++使指针后移一位,就是数组a的第二位,所以输出2,4
3.math.h的abs返回值()
-
不可能是负数
-
不可能是正数
-
都有可能
-
不可能是0
C语言中的函数申明为 int abs(int num);正常情况下:
num为0或正数时,函数返回num值;
当num为负数且不是最小的负数时,函数返回num的对应绝对值数,即将内存中该二进制位的符号位取反,并把后面数值位取反加一;
当num为最小的负数时(即0x80000000),由于正数里int类型32位表示不了这个数的绝对值,所以依然返回该负数。
因为负数的范围比正数大一个,比如8位的二进制,可以表示范围为-128~127
所以abs(-128)可能并不能表示为128
所以只能返回原值
所以只能返回原值
4.定义函数模板add,以下说法正确的有:()
pfun2 = add失败,需要显示定义为pfun2 = add<int>
pfun1 = add
pfun3 = add失败,add无法正确推导
pfun4 = add<int>失败,函数指针不可赋值
注意返回值和参数的类型一致,const
int 与 int 不是同一类型。