第五章变量和常量 5.1从类型到变量 5.1.1公孙龙的“白马非马” 5.1.2定义变量 5.1.3如何为变量命名 5.1.4如何初始化变量 5.1.4.1什么时候需要给变量初始化? 5.1.4.2初始化变量的两个时机 5.1.4.3通过计算得到初始值 5.1.4.4变量的取值范围 5.2变量与内存地址 5.3常量 5.3.1几种数据类型常数的表达方法 5.3.1.1整型常数的表达 5.3.1.2实型常数的表达 5.3.1.3字符常量的表达 5.3.1.4字符串常量 5.3.2用宏表示常数 5.3.3常量定义 5.3.4枚举常量 5.3.4.1为什么需要枚举类型 5.3.4.2定义枚举类型的基本语法 5.3.4.3关于枚举常量的输出效果 5.1从类型到变量 5.1.1公孙龙的“白马非马” 故事是春秋时的公孙龙先生说的
第五章 变量和常量 5.1 从类型到变量 5.1.1 公孙龙的“白马非马” 5.1.2 定义变量 5.1.3 如何为变量命名 5.1.4 如何初始化变量 5.1.4.1 什么时候需要给变量初始化? 5.1.4.2 初始化变量的两个时机 5.1.4.3 通过计算得到初始值 5.1.4.4 变量的取值范围 5.2 变量与内存地址 5.3 常量 5.3.1 几种数据类型常数的表达方法 5.3.1.1 整型常数的表达 5.3.1.2 实型常数的表达 5.3.1.3 字符常量的表达 5.3.1.4 字符串常量 5.3.2 用宏表示常数 5.3.3 常量定义 5.3.4 枚举常量 5.3.4.1 为什么需要枚举类型 5.3.4.2 定义枚举类型的基本语法 5.3.4.3 关于枚举常量的输出效果 5.1 从类型到变量 5.1.1 公孙龙的“白马非马” 故事是春秋时的公孙龙先生说的
城门上告示:“马匹不得入城”。公孙龙同志骑白马而来,遭拒入。公孙龙一脸正色 告示上写的是‘马’,而我骑的是‘白马’,难道‘马’等于“白马’吗?” 守门士兵觉得白马还真不是马,于是放行。 依公孙龙先生的理论认为:如果白马是马,黑马也是马,那么岂不白马等于黑马,所以, 不能说白马是马。“白马非马”是中国哲学史上的一桩公案。不过,若是我们从程序的角 度上说,可以认为:马在这里表示一种类型,而白马,黑马它们的类型都是马。 白马,黑马具有相同的“数据类型”,但它们都相对独立的个体。从这点说,别说有白 黑之分,就算同样是白马,这一匹和哪一匹白马,也是相对独立的个体 在程序中,“类型”和“变量”的关系正是“马”和“白马”的关系。 如果C或C++有这种数据类型: Horse,那么,定义一匹“白马”的变量应该这样: orse aWhi tehorse 以后我们说不定真的有机会自己定义 Horse,不过现在,我们在上一章的学的数据类型 char,int,bool等等 假设我们需发使用一个有关年龄的变量,在C或C++中是这样定义的 Int age 现在让我们来事先建立一个空的工程,随着本章课程的进展,我们需要不断地在工程中 加入零星的代码,及时实践。 仍然是一个空的控件台程序。方法是…以前我们讲过,忘了就看前面章节吧。 代码文件Unit1.cpp中,手工加入以下的黑体部分: #include <iostream. h> #pragma hdrstop / #pragma argsused
城门上告示:“马匹不得入城”。公孙龙同志骑白马而来,遭拒入。公孙龙一脸正色: “告示上写的是‘马’,而我骑的是‘白马’,难道 ‘马’等于 ‘白马’吗?” 守门士兵觉得白马还真不是马,于是放行。 依公孙龙先生的理论认为:如果白马是马,黑马也是马,那么岂不白马等于黑马,所以, 不能说白马是马。“白马非马”是中国哲学史上的一桩公案。不过,若是我们从程序的角 度上说,可以认为:马在这里表示一种类型,而白马,黑马它们的类型都是马。 白马,黑马具有相同的“数据类型”,但它们都相对独立的个体。从这点说,别说有白 黑之分,就算同样是白马,这一匹和哪一匹白马,也是相对独立的个体。 在程序中,“类型”和“变量”的关系正是“马”和“白马”的关系。 如果 C 或 C++有这种数据类型: Horse,那么,定义一匹“白马”的变量应该这样: Horse AWhiteHorse; 以后我们说不定真的有机会自已定义 Horse,不过现在,我们在上一章的学的数据类型 是: char,int,bool 等等。 假设我们需发使用一个有关年龄的变量,在 C 或 C++中是这样定义的: int age; 现在让我们来事先建立一个空的工程,随着本章课程的进展,我们需要不断地在工程中 加入零星的代码,及时实践。 仍然是一个空的控件台程序。方法是……以前我们讲过,忘了就看前面章节吧。 代码文件 Unit1.cpp 中,手工加入以下的黑体部分: //------------------------------------------------------------------------- -- # i nclude < iostream.h> #pragma hdrstop //------------------------------------------------------------------------- -- #pragma argsused
int main(int argc, char* argv[) getchar( return 0 5.1.2定义变量 数据类型变量名 张三”既可以指张三这个人,也可以是张三的名字。同样,上面的“变量名”,其实 也就是变量本身 举上一节的例子 Int 其中,int是数据类型(整型),而age是变量名,更多的时候,我们就说是变量age 最后是一人分号。它表示定义一变量在C或C++里一句完整的语句。因为C++的语言总是以 分号结束。 如果要声明一个字符类型变量 char letter 声明一个boo1类型的变量
int main(int argc, char* argv[])] { g etchar(); return 0; } //------------------------------------------------------------------------- -- 5.1.2 定义变量 语法: 数据类型 变量名; “张三”既可以指张三这个人,也可以是张三的名字。同样,上面的“变量名”,其实 也就是变量本身。 举上一节的例子: int age; 其中,int 是数据类型(整型),而 age 是变量名,更多的时候,我们就说是变量 age。 最后是一人分号。它表示定义一变量在 C 或 C++里一句完整的语句。因为 C++的语言总是以 分号结束。 如果要声明一个字符类型变量: char letter; 声明一个 bool 类型的变量:
bool do u love me 其它类型,除了void不能直接定义一个变量以外,格式都是一样的 void avoid;//错!void类型无法直接定义一个变量。 有时同一时候同一数据类型需要多个变量,此时可以分别定义,也可以一起定义 Int a Int Int c 下面采用一起定义,会更省事 int a.b.c 起定义多个同类型变量的方法是:在不同变量之间以逗号()分隔,最后仍以分号 ;)结束。 让我们来试试变量定义,另外,我们还要趁此机会,看看一个变量在仅仅进行定义之后 它的值会是什么 继续上一小节的代码。仍然是加入黑体部分,当然∥/及其后面的内容是注释,你可以 不输入 int main(int argc, char* argv[)] //定义变量 7777 //以下定义三个变量:a,bc int a. double bc
bool do_u_love_me; 其它类型,除了 void 不能直接定义一个变量以外,格式都是一样的。 void avoid; //错!void 类型无法直接定义一个变量。 有时同一时候同一数据类型需要多个变量,此时可以分别定义,也可以一起定义: int a; int b; int c; 下面采用一起定义,会更省事: int a,b,c; 一起定义多个同类型变量的方法是:在不同变量之间以逗号(,)分隔,最后仍以分号 (;)结束。 让我们来试试变量定义,另外,我们还要趁此机会,看看一个变量在仅仅进行定义之后, 它的值会是什么。 继续上一小节的代码。仍然是加入黑体部分,当然 // 及其后面的内容是注释,你可以 不输入。 ...... int main(int argc, char* argv[])] { / / ///////////////定义变量 / / //////////////////////////////////////////////// / /以下定义三个变量:a,b,c i nt a ; d ouble b ,c;
//a,b,c仅仅被定义,它的值会是什么?我们用cout输出三个变量: cout<<"a="<<a<<"b="<<b<<"c="<<c<<end 0 最好先保存代码文件和工程文件。然后按F9运行。以下是笔者机器得到结果 1b=3.82587e-66c=5.43231e-312 a是1,b和c都像天文数字?嗯,从这里我们学到一个C,C+编程极其重要知识:未 初始化的变量,它的值将是未确定的。所谓“未初始化”,就是指这个变量只有定义代码 而没有赋值 立即重复执行这段代码,得到结果可能都一样,但这并不说明这些值就是可以确定不 5.1.3如何为变量命名 C/C++的变量的名字中只能有以下字符:大小写字母、阿拉伯数字(但不能做为开头) 下划线 汉字不能成为变量名。 不过,就算允许,又有谁会这么累呢,用汉字作变量名? 不能或不要 不能取名为C、C++的保留字
/ /a,b,c 仅仅被定义,它的值会是什么?我们用 c out 输出三个变量: c out < < " a = " < < a < < " b = " < < b < < " c = " < < c < < e ndl; getchar(); return 0; } 最好先保存代码文件和工程文件。然后按 F9 运行。以下是笔者机器得到结果。 a 是 1,b 和 c 都像天文数字?嗯,从这里我们学到一个 C,C++编程极其重要知识:未 初始化的变量,它的值将是未确定的。所谓“未初始化”,就是指这个变量只有定义代码, 而没有赋值。 (立即重复执行这段代码,得到结果可能都一样,但这并不说明这些值就是可以确定不 变。) 5.1.3 如何为变量命名 C/C++的变量的名字中只能有以下字符:大小写字母、阿拉伯数字(但不能做为开头)、 下划线 _。 汉字不能成为变量名。 不过,就算允许,又有谁会这么累呢,用汉字作变量名? 不能或不要 不能取名为 C、C++的保留字。 如: