c – 为什么常量的类型修饰符?
我无法理解文字常量的类型修饰符的用途是什么,比如数值常量:
75 75u 75l 75ul 75lu 在什么情况下这可能有用?我的意思是如果你已经为变量类型声明了一个类型修饰符,我认为没有必要这样做.如果有人能帮助我理解这一点,那就太棒了!谢谢! 奖金问题:“文字”是否与“常数”相同,你可以只说“文字”而不是“文字常量”吗? 解决方法
对于整数文字,除了Bathsheba的答案之外,它还用于各种情况,如抑制警告
unsigned int n = somevalue; ... if (n > 5) dosomething(); 改为if(n> 5U)并且不再有警告. 或者当你做这样的事情 long long x = 1 << 50; 并意识到x不是你所期望的,你需要改变它 long long x = 1LL << 50; 另一种用法是C 11中的auto关键字 auto a = 1; auto b = 1U; auto c = 1L; auto d = 1UL; 以上将导致变量的不同类型 对于浮点文字,使用后缀将导致更正确的结果 long double a = 0.01234567890123456789; long double a = 0.01234567890123456789L; 那些may result in very very different values.那是因为没有后缀的文字是双字面值并且将被正确舍入到双倍,因此当long double具有比double更高的精度时,它将导致精度损失.由于double-rounding浮点数会发生同样的情况(首先是双倍然后浮动,而不是直接围绕文字浮动) if (0.67 == 0.67f) std::cout << "Equal"; else std::cout << "Not Equal"; The above will print out “Not Equal” What is the difference between casting to (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |