【编程练习04】容易出错的sizeof

您所在的位置:网站首页 sizeof的值 【编程练习04】容易出错的sizeof

【编程练习04】容易出错的sizeof

2022-03-23 14:18| 来源: 网络整理| 查看: 265

常持正念方圆梦,不忘初心总是春。sizeof的概念

在看练习之前先来看一看sizeof的概念。在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数)。

其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为:

typedef unsigned int size_t;

在32bit编译环境中:

#include 

int main(void){ printf("sizeof(char)  = %u\n", sizeof(char));  printf("sizeof(short) = %u\n", sizeof(short));  printf("sizeof(int)   = %u\n", sizeof(int));  printf("sizeof(long)  = %u\n", sizeof(long));  printf("sizeof(float) = %u\n", sizeof(float));  printf("sizeof(double)= %u\n", sizeof(double));  return 0;}

基本数据类型在内存中所占字节数为:

关于sizeof的易错问题

请看代码:

#include 

int main(void){ char *s = "hello";  printf("sizeof(char) = %u\n", sizeof(char));  printf("sizeof(char*)= %u\n", sizeof(char*));  printf("sizeof('a')  = %u\n", sizeof('a'));  printf("sizeof(*s+0) = %u\n", sizeof(*s+0));  printf("sizeof(*s)   = %u\n", sizeof(*s));  printf("sizeof(s)    = %u\n", sizeof(s));   return 0;}

先想一下输出结果是什么呢?

输出结果为:

【分析】

(1)sizeof(char) 的值为1,因为char类型数据在内存中占1字节

(2)sizeof(char*)的值为4,因为char*为一个指针,在32bit环境中为4字节,也即unsigned int的字节长度。

(3)sizeof('a')的值为4,因为此处'a’为int,占4个字节。此处'a'没有给变量赋值,实际上就是一个整型数,即此处'a’对应的ascii码的十进制为整数97。

若有如下定义:

char ch = 'a';

则此处ch的字节数sizeof(ch)的值为1,而不是4。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3