【牛客 题库】 char型变量值为1个字节长度,并从右侧开始运算 || abs返回值 || 函数模板

本文探讨了C++中char型变量的字节长度及其从右侧开始的运算特性,同时讲解了abs函数返回值的情况,包括可能的数值范围和应用场景。通过实例分析了不同字符长度的运算结果,并指出在特定条件下,char类型变量不可能表示负数、正数或0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.若有定义语句:char  a='\82';则变量 a()
  • 说明不合法
  • 包含1个字符
  • 包含2个字符
  • 包含3个字符
解答:B
首先记住的一点是:char只有一个字符,所以不管里面是什么内容,肯定只包含一个字符。
解析:
有一个‘\’,那么首先想到的是转义字符常量,‘\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));

解答:2,4
b首先指向a的第一个元素,*b+=2,表示将第一个元素加2,所以数组a的第三个元素变为3,b+2表示指向数组a的第三个元素,所以*(b+2)将数组a的第三个元素变为2,b++使指针后移一位,就是数组a的第二位,所以输出2,4

3.math.h的abs返回值()
  • 不可能是负数
  • 不可能是正数
  • 都有可能
  • 不可能是0
解答:C

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>失败,函数指针不可赋值
解答:BC
注意返回值和参数的类型一致,const int 与 int 不是同一类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值