C中的终端L.

use*_*312 0 c variables

在C中,是以下等价物:

long int x = 3L;(注意L)

long int x = 3

他们似乎是一样的.如果是,应该使用哪一个?应该L明确指定吗?

如果它们不同,有什么区别?

Fre*_*son 8

3.14L是一个long double文字,同时3.14是一个double文字.在这种情况下它不会有太大的区别,因为它们都用于初始化long int.结果将是3.

编辑:好的,3L是一个long文字,同时3是一个int文字.它仍然没有太大的区别,因为int它将被"提升"到很长一段时间.两种情况下的结果都是相同的.

编辑2:它可能会产生影响的地方是这样的:

printf("%ld\n", 123);
Run Code Online (Sandbox Code Playgroud)

这是未定义的行为,因为格式字符串指定了一个long并且只int传递了一个.这是正确的:

printf("%ld\n", 123L);
Run Code Online (Sandbox Code Playgroud)