黑马程序员技术交流社区

标题: sizeof的问题 [打印本页]

作者: msm1374    时间: 2015-9-7 12:36
标题: sizeof的问题

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

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

这个正确,发现的确是这样
作者: msm1374    时间: 2015-9-8 13:13
王鹏华ios0826 发表于 2015-9-7 21:23
你str是不是超过8位了!超过8位就得ld啊!

不少这样的,没超过也是ld  或者  lu
作者: iphone    时间: 2015-9-8 18:41
d也行    先学一下占位符知识吧
作者: msm1374    时间: 2015-9-8 22:29
iphone 发表于 2015-9-8 18:41
d也行    先学一下占位符知识吧

d是可以,不过会警告
作者: huahaoL    时间: 2015-9-8 23:21
不是%lu吗?,,%ld也可以?
作者: msm1374    时间: 2015-9-9 09:23
huahaoL 发表于 2015-9-8 23:21
不是%lu吗?,,%ld也可以?

ld也可以,视频中老师是这样写的,xcode也没有警告
作者: zhuai68    时间: 2015-9-9 09:47
看视频的说sizeof的问题问题,具体有个概念~~~同样来学习一下
作者: iphone    时间: 2015-9-9 13:03
msm1374 发表于 2015-9-8 22:29
d是可以,不过会警告

C基础,去看看书就呢几种占位符
作者: jsh_513    时间: 2015-9-9 13:48
sizeof运算符的返回值规定的就是无符号整型数,格式化输出的时候可以是  %ld  也可以是   %lu
作者: 李天昊    时间: 2015-9-9 14:05
sizeof()函数返回的就是一个unsigned int 以%d输出时 默认最高位是符号位 所以只能输出15位  而unsigned int是16位无符号数 所以要用%ld对应输出
  printf()函数前边的格式符要和后边的变量表达式代表的变量类型对应  %ld 与sizeof()代表的变量类型是对应的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2