一个常量(constant)是一个有固定值的表达式。
像变量一样,常量也是有数据类型的。默认的整数字常量的类型为int型。我们可以通过在后面加字母u或l来迫使它为无符号(unsigned)的类型或长整型(long)。
75 // int75u // unsigned int75l // long75ul // unsigned long浮点数的默认数据类型为double。如果你想使用float或long double类型,可以在后面加f或l后缀,同样大小写都可以:
3.14159L // long double6.02e23f // float意在表示单独字符的时候,我们用单引号(single quotes (')),在表示字符串或多于一个字符的时候我们用双引号(double quotes ("))转义字符:
另外你可以数字ASCII 码表示一个字符,这种表示方式是在反斜杠(/)之后加以8进制数或十六进制数表示的ASCII 码。在第一种(八进制octal)表示中,数字必需紧跟反斜杠(例如/23或/40),第二种(十六进制hexacedimal),必须在数字之前写一个x字符(例如/x20或/x4A)。
最后如果我们想让字符串使用宽字符(wchar_t),而不是窄字符(char),可以在常量的前面加前缀L:
L"This is a wide character string"宽字符通常用来存储非英语字符,比如中文字符,一个字符占两个字节。
实际上编译器在遇到#define指令的时候做的只是把任何出现这些 常量名(在前面的例子中为PI, NEWLINE或WIDTH)的地方替换成他们被定义为的代码(分别为3.14159265, '/n'和100)。因此,由#define定义的常量被称为宏常量macro constants。
#define 指令不是代码语句,它是预处理器指令,因此指令行末尾不需要加分号semicolon (;) 。如果你在宏定义行末尾加了分号(;) ,当预处理器在程序中做常量替换的时候,分号也会被加到被替换的行中,这样可能导致错误。
通过使用const前缀,你可以定义指定类型的常量,就像定义一个变量一样:
const int width = 100;const char tab = '/t';const zip = 12440;如果没有指定类型(如上面最后例子中最后一行),编译器会假设常量为整型int。
新闻热点
疑难解答