一. 变量名的定义及定义方式:
1. 变量名都是由字母.数字和下划线组成. (变量名就是一种标识符)
2. 要定义多项变量名的时候, 要分开写, 例如想要定义
int a, b ;的话, 语法上虽然不会出错, 但会在以后掺入指针的时候产生疑问, 需按规范写成
int a = 0 ;
int b = 0 ;
※ int nAge = 10 ;
如果10 变成10.5 或者10.9 , 也能编译, 但结果还是10, 不存在四舍五入, 这叫丢失精度, 因为是高位向低位转(10.9占8字节,比10 的4字节高)
一. 变量的初始化:
当一个变量被定义后, 如果不给它赋值, 那么它的值将是一个随机值, 在程序中使用的话会引起不可预知的错误.
赋值的定义: 变量被定义后给它一个值就叫赋值.
①. 字符常量和整型数据间可以运算;
②. 字符常量和整型数据间可以互相赋值.
转义字符
转义字符 | 转义字符的意义 |
\n | 回车换行符 |
\t | Tab制表符 |
\b | 退格符 |
\r | 回车符 |
\\ | 反斜线符”\” |
\’ | 单引号符 |
\” | 双引号符 |
1. “\n”可以把”\r”覆盖.
2. getch( )这个命令里, 只接受”\r”不接受”\n”, 这个函数的功能是隐式输入.
3. 要输入c:\a.txt 的话,直接输入会变成”c: .txt”, 因为”\a”会被默认为是一个转义字符而无法实现输出, 需要输入’\\a”才能实现输入.
注: 同理理解”\”, “ \’ ”的运用.
4. 退格符的使用:
if( '\b' == szInput[j] )
{
printf( "\b \b" ) ;
j= j - 2 ;
}
if( j<0 )
else
{
printf(“*” ) ;
}
四. 符号常量—宏定义
#define
格式:#define符号常量 常量
例: #define NUM 20
#define PI 3.1415926
注意: 1. 行尾不能加分号(即常量后面)
2. 宏名必须大写(即符号常量必须大写)
3. 宏的工作就是作简单的字符串的替换, 无其他任何作用
4. 宏可以重复定义, 编译不会报错, 只以最后一次定义为准, 如:
#define SIZE 100
#define SIZE 200
替换的时候会换成200
※ 以下是一种#define的用法, 不过一般不会这么用, 原因是写程序前已经基本定好了是哪种数据类型的:
#include<stdio.h>
#define SIZE 100
#define TYPE “%d\n”
int main( intavgc, char *avgv[] )
{
printf( TYPE, SIZE ) ;
return 0 ;
}
5. 面试题: 已知一个数组为table, 类型不知道, 占用长度也不知道, 问这个数组占用多少个字节?
#defineLEN ( sizeof( table ) / sizeof( table[0] ) )
五. 注释:
1. 单行注释: //________
2. 多行注释: /*
_______
_______
*/
被注释后的内容都会变成绿色, 不会被编译, 可以在其中输入任意内容包括中文.
多行注释符号可被单行注释符号注释掉使其失效-----“// /*”
六. 零的意义:
1. 整数零→int (4字节)
2. ‘\0’→char (1字节) ‘\0’的ASCII值为零
3. 空值NULL, 通常在指针操作
4. bool里的0→false
5. 除了零之外的都叫非零值
6. 所有的零值都是: 假, 所有的非零值都是: 真 (用于判断)
注: 1). ‘0’不是零, 因为它的ASCII值是48.
2). “0”不是零, 因为它是字符串. (以‘\0’结束).
七. const---不可修改的变量
const int SIZE =100 ;
1. const的对象名字全大写.
2. const的对象必须初始值.
3. const的对象不能被赋值.
4. const语句后必须加分号.
错例:
1). const intSIZE = 100 ;
SIZE= 200 // 错误!原因: const对象不能被赋值.
2). const int SIZE =100 ;
SIZE = 100 // 错误!! 原因: 不能被重复定义.
※ #define 和 const的区别:
①. 前者是C语言的, 后者是C++的
②. 前者定义的符号常量是无类型的, 只能作简单的替换
后者有类型, 会作类型检查(编译时)
③. 前者可以重复定义, 后者不行
④. 前者不能加分号, 后者必须加分号