鱼C论坛

 找回密码
 立即注册
查看: 1680|回复: 3

[已解决]SLE5 课堂内容:为啥我输出的long int 占8个字节呢

[复制链接]
发表于 2018-9-4 17:10:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ziqiyang 于 2018-9-4 17:43 编辑

<#include<stdio.h>

int main()
{
    printf("int = %lu\n",sizeof(int));
    printf("short int = %d\n",sizeof(short));
    printf("long int = %d\n",sizeof(long));
    printf("long long int = %d\n",sizeof(long long));
    printf("char = %d\n",sizeof(char));
    printf("_Bool = %d\n",sizeof(_Bool));
    printf("float = %d\n",sizeof(float));
    printf("double = %d\n",sizeof(double));
    printf("long double = %d\n",sizeof(long double));
   
    return 0;
}>
输出结果是<int = 4
short int = 2
long int = 8
long long int = 8
char = 1
_Bool = 1
float = 4
double = 8
long double = 16
Program ended with exit code: 0>
带你学C带你飞第6课,跟着小甲鱼老师打的,没问题,输出确实long int占8个字节,不明白了.


顺便问下,我用的XCODE, 这个程序里所有printf语句都提示“Format specifies type 'int' but the argument has type 'unsigned long'”
求老鸟指导
最佳答案
2018-9-4 17:44:39
printf("int = %lu\n",sizeof(int));  //应该是 %d

其实是要看机器与编译器的位元数,再来是看编译器。因为没有严格规定~
屏幕快照 2018-09-04 下午5.36.22.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-4 17:25:21 | 显示全部楼层
long只能保证 大于等于 int
不同机器的结果不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-4 17:44:39 | 显示全部楼层    本楼为最佳答案   
printf("int = %lu\n",sizeof(int));  //应该是 %d

其实是要看机器与编译器的位元数,再来是看编译器。因为没有严格规定~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-4 19:35:27 | 显示全部楼层
你的编译器是64位的,就会这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-2 10:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表