1.字面常量
C++中的整型数据除了一般的表示方法后,允许给他们添加后缀u或l,u对应的是无符号型常量,l对应的是长短整型之分。
十进制:以+或-号开头,后接一串首位非0的0~9构成的字符串构成,或者一个单独的字符0。若无正负号,则默认为正数。
八进制:以数字0开头,后面接若干个八进制数字,八进制数前不带正负号,全部默认为正数。
十六进制:以数字0和字符x(不区分大小写)开头,后面接若干个十进制数字和字母A-F或a-f。
同时,可以访问int或longlong的数值范围。
cout << -1234ul << endl;
cout << 0xab42123u << endl;
cout << 0XAB42123UL << endl;
cout << 072154 << endl;
cout << LONG_LONG_MIN << endl;
cout << INT_MAX << endl;
结果:
4294966062
179577123
179577123
29804
-9223372036854775808
2147483647
2.实型常量
(1)定点表示:定点表示的实数简称定点数,通常由一个正号或负号(正号可以省略),后接若干个十进制和小数点构成。这个小数点可以处在任何一个数字的前面或后面,它一般由整数部分和小数部分组成。
cout << 21.359 << endl;
cout << 78123. << endl;
cout << .00000123 << endl;
cout << .0 << endl;
21.359
78123
1.23e-006
0
(2)小数表示:浮点表示的实数由一个十进制整型或定点数,后接一个字母E(大小写均可),和1~3位的十进制整数组成。E之前的部分称为浮点数的尾数,之后的部分称为浮点数的指数。该浮点数的值就是它的尾数乘以10的指数幂。其一般的形式是:aEn(a为十进制数,n为十进制指数)
举例:
a= 3.1415926e0 = 31.415926e-1 = 0.31415926e1
3.宏定义声明符号常量
#define 标识符 常量
是预处理语句
#define max(a,b) ((a)>(b))?(a):(b))
这样书写,可以防止a、b是复杂表达式的时候出现优先级混淆造成运算结果的错误。
注意,另一种常量声明方式为:const关键字
const int MAXN = (1 << 12) - 1;
这里const定义的常变量将进行严格的类型检查,而#define定义的变量只是简单的符号替代。同时const是具有作用域的,而#define在预处理过程后,若没有#undef解除宏定义,将一直有效。
4.运算符号
(1)求余运算符%的规则:
要求两个操作数都必须是整型或字符型,然后若两者中存在负数,运算结果的符号取决于机器。
(2)赋值运算符:
基本赋值运算符:
sum1 = 2; 将右边的数值付给左边
复合赋值运算符:
sum1 = sum2 = 3;
本质为:sum2 = 3; sum1 = sum2;从右向左进行赋值的处理。
(3)两个数大小的比较:
对于整型或布尔型变量来说,在判断语句中的布尔表达式中用
a == b即可。判断左右变量a、b是否相等。
但是,由于浮点数在计算机中进行运算和存储的时候会产生误差,那么在比较两个浮点数时,建议不要直接比较两数是否相等。我们通常采取的方法是:判断两个实数之差的绝对值是否小于一个给定的允许误差数。
fabs(d1 - d2) <= 1e-6;//判断d1是否等于d2
fabs(d1 + d2 - 7.77777) <= 1e-6; //判断d1和d2的和等于7.77777