【试题056】C语言长度运算符例题合集

1.说明:sizeof()是一个单目运算符,计算数据类型所占用的内存字节数(一个字符占一个字节)运算对象为数据类型符和变量,结果类型为整型,右结合

2.注意区分:★(!系统在存储字符串常量时,会在字符串末尾自动加上一个结束标志符\0,所以无须人为添加,字符结束标志符\0也要在字符数组中占用一个元素的存储空间,即1字节,因此在说明字符数组长度时,至少为字符串所需长度加1)

  • sizeof()运算符:遇到/0结束,所以会多统计一个结尾的空字符\0,n个字符的长度是n+1个
  • strlen()函数:求字符串的实际长度,只适用于字符串,不包括空字符 '\0'

3.题目:

设char str[10]=“Computer”;

执行printf ("%dn",sizeof (str) ) ;后输出结果是 ?

  • 分析:sizeof (str)→测量str数组大小
  • 但定义一维数组时字节是char str[10],大小为1*10=10

4.题目:

设struct { short A; char B; float C; }cs; 则sizeof(cs)的值是?

  • 解析:short A=2,char B=1,float C=4
  • 三者之和是:2+1+4=7

5.题目:sizeof(double)是int类型表达式

  • 分析:sizeof()的结果类型为整型

6.题目:

设typedef struct

{ int a; char s[10]; }TYPE; TYPE u1; 则printf("%dn",sizeof(u1)); 的输出结果是 ?

  • 分析:sizeof(u1)中包含 int a和char s[10]
  • int a=2个字节
  • char s[10]=10
  • 结果为2+10=12

7.题目:

若定义了union { char a[10]; short b[4][5]; long c[5]; }u; 则执行printf("%d\n",sizeof(u))语句的输出结果是 ?

  • 分析:union共用体,多个成员共用一块内存,编译时会选取成员中长度最长的来声明!
  • sizeof(u)中包含char a[10]和short b[4][5]和long c[5]
  • 其中char a[10]占用1*10=10个字节
  • short b[4][5]占用2*(4*5)=40个字节
  • long c[5]占用4*5=20个字节
  • 所以最长的为40

8.题目:设char s[]="BeijingChina";

执行语句printf("%d,%d\n",strlen(s),sizeof(s));后输出结果是?

  • 分析:strlen(s)=12
  • sizeof(s)=12+1=13

9.题目:设char s[]="China";

执行语句printf("%d,%d\n",sizeof(s),strlen(s));后输出结果是 ?

  • 分析:sizeof(s)=5+1=6
  • strlen(s)=5

10.题目:设struct student {char name[10]; char sex;}stu;

则sizeof(stu)的值是?(stu是结构体变量,所占用的字节数为所有成员字节数之和)

  • 分析:sizeof(stu)中包括:char name[10]和char sex
  • 其中char name[10]=1*10=10
  • char sex=1
  • 结果为10+1=11

11.题目:设 char *p="abc\0def";

则执行语句 printf("%d",sizeof(p));后输出结果是 ?

  • 分析:程序只执行到abc\0
  • 因为遇到\0结束运行
  • abc\0 一共四个字节

12.题目:设char p[]="abc\ndef"

则执行语句printf("%d",sizeof(p));后输出结果是?

  • 分析:abc三个
  • \n转义字符第四个
  • def伍六七
  • 在字符串末尾自动加上一个结束标志符\0
  • 一共是8个

13.题目:

设struct student { char name[20]; char sex; }stu; 语句printf("%d\n",sizeof(stu));的输出结果是?

  • 分析:sizeof(stu)中包括char name[20]和char sex;
  • 其中char name[20]=1*20=20
  • char sex=1
  • 一共是20+1=21

14.题目:

设 union{ int i; char j[10];float k; }u; 则sizeof(u)的值是?

  • 分析:sizeof(u)中包括int i和char j[10]和float k
  • union共用体,多个成员共用一块内存,编译时会选取成员中长度最长的来声明!
  • 所以char j[10]=1*10=10为最长

15.题目:设char s[]="\1234";

执行语句printf("%d,%d\n",sizeof(s),strlen(s));后输出结果是?

  • 分析:\是转义字符反斜杠占1个
  • sizeof(s)=5+1=6
  • strlen(s)=5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值