C语⾔言中的变量都必须在作⽤用域开始的位置定义!!
C++中更强调语⾔言的“实⽤用性”,所有的变量都可以在需要使⽤用时再定义。
using namespace std; int main(void) { int i = 0; cout << "i = " << i << endl; int k; k=4; cout << "k = " << k<< endl; return 0; }
在C语⾔言中,重复定义多个同名的全局变量是合法的
在C++中,不允许定义多个同名的全局变量
C语⾔言中多个同名的全局变量最终会被链接到全局数据区的同⼀一个地址空间上
int g_var; int g_var = 1;
C++直接拒绝这种二义性的做法。
struct类型增强C语⾔言的struct定义了⼀一组变量的集合,C编译器并不认为这是⼀一种新的类型
C++中的struct是⼀一个新类型的定义声明
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; struct Student { char name[100]; int age; }; int main() { Student s1 = { "Yang", 18 }; //C++中可以直接写Student struct Student s2; //C语言中 必须要有 struct类型 不然会报错 system("Pause"); //阻塞功能 return EXIT_SUCCESS; // 返回正常退出 }
C++中所有的变量和函数都必须有类型且C++调用函数时必须保持签名一致
C语⾔言中的默认类型在C++中是不合法的
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; f() //缺少显示类型(返回值) { return 10; } int g(int a) { return 5; } int main() { f(); g(1, 2, 3, 4, 5); //函数调用参数太多 system("Pause"); //阻塞功能 return EXIT_SUCCESS; // 返回正常退出
C++中的布尔类型
C++在C语⾔言的基本类型系统之上增加了bool
C++中的bool可取的值只有true和false
理论上bool只占⽤用⼀一个字节,
如果多个bool变量定义在⼀一起,可能会各占⼀一个bit,这取决于编译器的实现
true代表真值,编译器内部⽤用1来表⽰,只能用1来表示,不管变量值是多少,都会变成1
false代表⾮非真值,编译器内部⽤用0来表⽰
bool类型只有true(非0)和false(0)两个值
C++编译器会在赋值时将非0值转换为true,0值转换为false