C语言的基本元素-常量

程序运行过程中,其值保持不变的量叫常量。

按照所属数据类型分四种常量:

整形常量

实行常量

字符串常量

字符型常量

一、整型常量

三种形式:
n 十进制整数:由数字0~9和正负号表示.如 123,-456,0
n 八进制整数:由数字0开头,后跟数字0~7表示.如0123,011
    //可能无意中布下陷阱,如case分支用0补齐
n 十六进制整数:由0x开头,后跟0~9,a~f,A~F表示如 0x123,0Xff

二、实型常量

•表示形式(两种):
–十进制数形式:( 必须有小数点 ) 如:0.123, .123, 123.0
–指数形式:( e E 之前必须有数字 指数必须为整数 ) 12.3 e3 ,123E2, 1.23e4。
错误的写法: e-5 ,1.2E-3.5,e3。
•实型常量的类型:
–默认为double
实型常量后加字母f F, 认为它是 float ,如12.3f
实型常量(浮点数)使用注意事项
int i = 0;
if( 0 == i) { printf( OK ); }// 整形比较大小
浮点数如何比较大小?
查看以下打印结果 ( 完全代码见备注页):
int i=  0;
float f = 0.0;
for ( i=0; i<26; i++) f += 0.1;
printf ( "%d,%.7f,%f/n", i, f , f );
所以浮点数很少是精确的!浮点数比较大小只要是足够接近即可
if( f-2.6 >-1e-6 && f-2.6 <1e-6 ) { printf("OK");   }
// 这里用 if( f == 2.6f) 是不合理的!
正确的方法:
#include <stdio.h>
void main()
{
int i=  0;
float f = 0.0;
for ( i=0; i<26; i++) f+= 0.1f;
printf ( "%d,%.7f,%f/n", i, f ,f);
if( (f-2.6)>-1e-6 && (f-2.6)<1e-6 )
{
printf("ok/n");
}
}
三、字符常量
定义:用 单引号 括起来的单个 普通字符 转义字符
转义字符
控制字符,表示特殊的动作,不能在屏幕上显示, 反斜线 后面 跟一个字符或一个代码值表示。
字符常量的值 :一个字符其实是用一个8位整数表示的,故可以 表示256种字符, 表示字符的整数 就是 ASCII 码。
附:常见转义字符
/n ---回车换行 
/a---警报
/b---退格
/r---回车不换行,当前位置移到本行行首
//---反斜杠
/’---单引号
/”---双引号
/ddd ---八进制值(d表示一个八进制数字)
如 /101 表示10进制的65
/xhh ---十六进制值(h表示一个十六进制数字)
如 /x41表示10进制的65
上面两个当我们想打印ASCII码对应的字符时可用。
四、字符串常量
字符串常量
定义:用 双引号 (“ ”)括起来的字符序列。
存储: 每个字符串尾 自动加一个 ‘/0’ 作为字符串结束标志
例如:字符串“hello”在内存中。
用空格隔开的 连续 的字符串被视为一个串。
例如:查看程序运行结果
void main( )
{
    char str[ ] = "Neu"  "soft";
    printf("%d/n", sizeof (str));
    printf("%s/n",str);
}


除了按照所属数据类型,常量分为四种,
从表现形式上看常量有下面几种形式:
1. 字面常量-1,3,4,…… ‘a’,’b’,’c’, “hello”
2. 宏常量-#define  PRICE  30
3. const常量- const  int  price = 30;
4. 枚举常量—使用enum关键字

使用宏常量的好处:
1. - 增加程序可读性;
2. - 减少书写错误;
3. - 便于维护;

使用const而不是宏来定义常量的好处 :
1、const定义的常量编译器可以对其进行数据类型安全检查,而 #define宏定义的常量却只是进行简单的字符替换,且有时还会 产生边际效应(不如你愿)。
所谓边际效应举例如下:
            #define N 100
            #define M 200 + N
            当程序中使用 M*N 时,原本想要 100 * (200+ N )的却变成了 100 * 200 + N。
2、有些调试程序可对const进行调试,但不对#define进行调试。
3、当定义局部常量时,const作用域仅限于定义局部常量的函数 体内。但用#define时其作用域不仅限于定义局部常量的函数体 内,而是从定义点到整个程序的结束点。
使用枚举常量
枚举常量一定是整形量
枚举常量不能取地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值