[Constant]C中常数后缀的使用

原创 2015年07月11日 00:24:35
   问题描述:C/C++程序许多时候会看到一个常数后面会跟一个后缀说明,比如UL。常数后缀许多时候不用也不会有问题,只要考虑常数赋给变量时不溢出,因为变量进行计算时会将常数转换成自己的类型。但是有时候就是因为常数没有指定类型,而且数值很小(比如2)不会有溢出问题,也会产生很隐蔽的bug。比如有次将编译器选项的优化项选择为最高(那样源代码编译后生成的二进制文件会最小),在使用printf函数在LCD屏输出常数2时就出现了问题,输出的这个数字会不断改变,然后将该常数类型用后缀限定后,就一切正常了。所以在使用的编译器不是那么聪明,或者将编译器选项按照自己要求进行了修改后,程序中许多地方都要严格的进行书写。因为常数后缀在许多时候的关键作用,于是搜集资料进行了整理与学习。
   数的进制:二进制数,八进制数(O),十进制数,十六进制数(0x)。程序中十进制数和十六进制数最为常见,八进制数很少见,二进制数只是一种表示(程序中并不能直接书写)。
   整数常数后缀:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等),u和l没有顺序区别。例:100u;-123u; 0x123l。
   浮点常数后缀:科学计数形式和小数点形式。浮点常数默认是double的。f或F(单精度浮点数)、l或L(长双精度浮点数)。(注:因浮点型常数总是有符号的,故没有u或U后缀)。例:1.23e5f;1.23l; -123.45f。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

error C2057: expected constant expression (C语言中数组的大小可以在程序运行时定义吗? )

数组的大小可以在程序运行时定义吗? 不。在数组的定义中,数组的大小必须是编译时可知的,不能是在程序运行时才可知的。例如,假设i是一个变量,你就不能用i去定义一个数组的大小: char arra...
  • whatday
  • whatday
  • 2012年04月26日 09:53
  • 12466

The different between #define and const for a constant in C

这应该算一个经常争论的话题,而且往往没有个结果。 虽然他们在使用中感觉“差不多”,但是他们在实现上有什么区别? 请看下面的代码: 3:    #define T 13 /*用#define定义的...

c_integer_constant_suffix

Double-Word Integers ISO C99 supports data types for integers that are at least 64 bits wide, and...

error C2099: initializer is not a constant 或者error C2099:初始值设定项不是常量

先看一道题: #include const int a=15; const int b=a+15; void main() {  printf("%d\n",b); } 很有意思哟:在...

《Ruby Programming》向Ruby之父学程序设计 开始使用Ruby 对象与变量、常数

本书是Ruby初学者比较适合使用的一本书,虽然不是所谓的圣经,我觉得自己还是应该看看的……因为没有找到圣经 第1部分 开始使用Ruby each迭代子 数组.each {|变量| 想要反复执行的...

【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数

本博客所有文章分类的总目录:【总目录】本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:【目录】开源Math.NET基础数学类库使用总目录 1.前言   在前几篇关于...

二叉树非递归使用常数存储空间遍历

主要使用了一个方向值orien,记录在二叉树中搜索时的路径方向,比如由父节点到左子树时orien值为1,这样按照严格的行走规则,在一个while循环里就能遍历整棵树。    一个简单的例子:    一...

CUDA卷积操作—使用constant memory实现高斯滤波

高斯滤波就是使用高斯模板和图片进行卷积运算,高斯函数及模板如下图所示: 卷积前后的效果图如下: GPU代码如下所示: #include "cuda_runtime.h" #include ...

java中的switch使用 case expressions must be constant expressions,Duplicate case

package sort; /** * case expressions must be constant expressions,Duplicate case * @author Sherloc...

CUDA By Examples 6 - 使用常量内存 Constant Memory

访问常量内存时, GPU会针对访问同一个地址的half-warp(16个threads)只读取一次此地址. 被访问的常量内存被cache, 之后的对此地址的访问可以更加快捷. 如果half-war...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Constant]C中常数后缀的使用
举报原因:
原因补充:

(最多只允许输入30个字)