关于long int和long long int占用字节问题
在小甲鱼的P6视频数据类型中,有一段代码打印不同数据类型在系统中所占用的字节是多少,在这里我遇到两个问题,一个是编译的时候出现警告,warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
printf("int = %d\n", sizeof(int));
这里我百度了一下得知要把%d换成长整型%ld或%u无符号类型解决,但是在小甲鱼的视频中编译是没有报这个警告的,代码是一样的。
另一个是视频里的运行结果,long int = 4 , long long int = 8,但是我自己在电脑上运行的结果是long int = 8,long long int = 8, 我百度了一下,好像网上的都是long int
= 4
我不知道是不是操作系统的问题,我的编译环境是win10自带的linux子系统,安装了ubuntu,虽然这两个问题好像并不大,但是就是想知道原因,不然无法集中学习,希望大神可以解答一下我这两个问题,感激不尽 关于计算机的,这个不是语言的问题,小甲鱼装的是32位的Linux(我不会用Linux,所以没看小甲鱼的C),而你的电脑应该是64位的,这个不影响学习 int, long int, long long int 的长度与计算平台相关的.32位和64位机给出的结果肯定不同啊.
对于32位机:int:4字节 long int:4字节 long long int:8字节
对于64位机:int:4字节 long int:8字节 long long int:8字节
可以用下面的代码测试一下:
#include <stdio.h>
int main(void)
{
printf("int: %ld\n", sizeof(int));
printf("long int: %ld\n", sizeof(long int));
printf("long long int: %ld\n", sizeof(long long int));
printf("long : %ld\n", sizeof(long));
printf("char : %ld\n", sizeof(char));
printf("short : %ld\n", sizeof(short int));
printf("float : %ld\n", sizeof(float));
printf("double : %ld\n", sizeof(double));
return 0;
}
页:
[1]