A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© msm1374 中级黑马   /  2015-9-7 12:36  /  2026 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


求各位大神指点,为什么格式控制字符串要是ld呢?
   printf("%ld\n",sizeof(str));   

20 个回复

倒序浏览
来两分!!!!
回复 使用道具 举报
因为太长了
回复 使用道具 举报
不是lu吗...
回复 使用道具 举报
你str是不是超过8位了!超过8位就得ld啊!
回复 使用道具 举报
一般来说 ld是为了long int 输出用的,但是呢,现在大部分编译器中32位下int和long都是4字节,在mac中是六十四位所以int是4long是8,只用win下int和long在64位依旧都是4位。
回复 使用道具 举报
sizeof运算符的返回值规定的就是无符号整型数,格式化输出的时候可以是  %ld  也可以是   %lu
回复 使用道具 举报 1 0
估计这里可能是为了不同编译器的优化,或者纯属为了str可能长度超出4位的输出等等有好多可能性,最好根据完整代码分析,连str的具体类型都不知道实在无法下定论
回复 使用道具 举报
来两分!
回复 使用道具 举报
我也不会,进来学习学习。
回复 使用道具 举报
1wang2huan 发表于 2015-9-7 21:27
sizeof运算符的返回值规定的就是无符号整型数,格式化输出的时候可以是  %ld  也可以是   %lu ...

这个正确,发现的确是这样
回复 使用道具 举报
王鹏华ios0826 发表于 2015-9-7 21:23
你str是不是超过8位了!超过8位就得ld啊!

不少这样的,没超过也是ld  或者  lu
回复 使用道具 举报
d也行    先学一下占位符知识吧
回复 使用道具 举报
iphone 发表于 2015-9-8 18:41
d也行    先学一下占位符知识吧

d是可以,不过会警告
回复 使用道具 举报
不是%lu吗?,,%ld也可以?
回复 使用道具 举报
huahaoL 发表于 2015-9-8 23:21
不是%lu吗?,,%ld也可以?

ld也可以,视频中老师是这样写的,xcode也没有警告
回复 使用道具 举报
看视频的说sizeof的问题问题,具体有个概念~~~同样来学习一下
回复 使用道具 举报
msm1374 发表于 2015-9-8 22:29
d是可以,不过会警告

C基础,去看看书就呢几种占位符
回复 使用道具 举报
sizeof运算符的返回值规定的就是无符号整型数,格式化输出的时候可以是  %ld  也可以是   %lu
回复 使用道具 举报
sizeof()函数返回的就是一个unsigned int 以%d输出时 默认最高位是符号位 所以只能输出15位  而unsigned int是16位无符号数 所以要用%ld对应输出
  printf()函数前边的格式符要和后边的变量表达式代表的变量类型对应  %ld 与sizeof()代表的变量类型是对应的

点评

正解  发表于 2015-9-9 18:16
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马