OpenEdv-开源电子网

标题: 问个问题哈,关于数字后缀L的用法 [打印本页]

作者: WM_CH    时间: 2016-8-13 19:53
标题: 问个问题哈,关于数字后缀L的用法
代码如下:
[mw_shl_code=applescript,true]unsigned long     num;
num = num * 24 * 60 * 60;

[/mw_shl_code]


[mw_shl_code=applescript,true]unsigned long  num2;
num2 = num2 * 24L * 60L * 60L;[/mw_shl_code]


这有什么区别?假如不加后缀L的话,是什么情况?









作者: 嗷大喵    时间: 2016-8-13 19:53
告诉编译器  你这个数值是按long型  计算的
作者: WM_CH    时间: 2016-8-15 10:07
顶一下   
作者: xuande    时间: 2016-8-15 10:10

好像头次见。


作者: civic7366    时间: 2016-8-15 13:56
要看編譯器預設是什麼吧...
M4應該原本就是預設就是32位有號整數所以加不加沒差

後綴在浮點常數比較有差吧...
試試float num=3.0f/2 跟 3/2
作者: WM_CH    时间: 2016-8-18 10:23
嗷大喵 发表于 2016-8-13 19:53
告诉编译器  你这个数值是按long型  计算的

关键是,假如不加L,以下代码会有什么影响:
[mw_shl_code=applescript,true]num2 = num2 * 24L;[/mw_shl_code]
作者: WM_CH    时间: 2016-8-18 11:49
本帖最后由 WM_CH 于 2016-8-18 15:03 编辑

C语言中常量的默情况:整形默认为有符号int;浮点型默认为double。
如果整形常量大小超出int,默认自然就为long int;
如果需要无符号整形常量的话就可以在常量后面加u或是U,如0u或是0U,同理可以在常量后面加ul或UL表示无符号长整形常量。而浮点型常量后缀只有f或F,l或L,没有u或U,因为浮点数一般都为有符号。
(, 下载次数: 1)