c++中全局变量、变量和函数的都要有类型、类型转换、struct结构体、bool类型和三目运算符的增强
一、c++全局变量的增强
1、在C语言中全局变量的声明和定义
//全局变量
int a;//定义
int a;//声明
int a;//声明
相同变量,第一个是定义,后面的的变量a都是声明;
2、在c++中的全局变量
//全局变量
int a;
extern int a;//第二个及以后a变量得加上extern
extern int a;
二、c++中所有变量和函数都要有类型
1、c语言中的函数的形参类型可以不写,没有返回值可以返回,实参的个数不做检测
2、c++语言中的函数的形参类型必须写,没有返回值不可以返回,实参的个数做检测
①变量的类型:
在C++中,每个变量都必须有一个类型,指定了变量可以存储的数据的种类。例如,整数变量、浮点数变量、字符变量等都需要指定其相应的类型。类型还决定了变量的大小、范围和可以执行的操作。
int myInteger = 42; // 整数变量
double myDouble = 3.14; // 浮点数变量
char myChar = 'A'; // 字符变量
②函数类型
函数也有类型,被称为函数的返回类型。返回类型指定了函数执行后返回的值的类型。函数的参数列表和返回类型共同构成了函数的类型特征,也称为函数签名。
int add(int a, int b) {return a + b;
}double divide(double x, double y) {return x / y;
}
C++是一种强类型语言,这意味着变量和表达式的类型在编译时就必须被明确定义,而且在大多数情况下不会自动进行隐式的类型转换。这有助于避免在程序中出现意外的类型错误。
三、c++中有严格得类型转换
两边的类型要一致
1、隐式类型转换(自动类型转换):
隐式类型转换是指在某些情况下,编译器会自动进行的类型转换,而不需要显式地指定。例如,将整数赋值给浮点数或将字符赋值给整数时,编译器会自动进行类型转换。然而,这种隐式转换可能会导致精度损失或不可预期的行为。
2、显式类型转换(强制类型转换):
C++提供了几种显式类型转换操作符,可以在代码中明确指定需要进行的类型转换。这些操作符分别是:static_cast、dynamic_cast、const_cast和reinterpret_cast。尽管这些操作符允许开发人员更灵活地控制类型转换,但在使用时需要谨慎,以免引入潜在的错误。
char *p = molloc(10);//左边是char *型,右边是void *
//此时要强制转换
char *p = (char *)malloc(10);
四、在c++中队struct的增强
在c++中使用结构休类型时,可以不写struct关键宁
1、C语言中的struct
struct stu{int a;double b;
};
void test(){struct stu obj;
}
2、c++中的struct
struct stu{int a;double b;
};
void test(){stu obj;//可以不用写struct
}
3、c和c++中struct的主要区别:
c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private。
五、c++中增加了bool类型
C++引入了布尔(bool)类型作为基本的逻辑类型,用于表示真(true)或假(false)的值。布尔类型在编程中经常用于控制流程、条件判断和逻辑运算。C++中的布尔类型提供了更加清晰和直观的逻辑表达方式。
1、布尔类型的声明和赋值:
在C++中,布尔类型只有两个可能的值:true和false。可以使用关键字bool来声明布尔类型的变量,并将其赋值为true或false。
bool isTrue = true;
bool isFalse = false;
2、布尔类型的逻辑运算:
布尔类型可以进行逻辑运算,如与(&&)、或(||)和非(!)等。这些逻辑运算符用于组合和比较布尔值。
bool a = true;
bool b = false;bool resultAnd = a && b; // 逻辑与运算
bool resultOr = a || b; // 逻辑或运算
bool resultNot = !a; // 逻辑非运算
六、c++对三目运算符的增强
1、在c语言中三目运算符
返回的是一个常量
int a = 10;
int b = 20;
printf("%d\n", a < b ? a : b);//
2、在c++中的三目运算符
还可以返回一个变量
int a = 10;
int b = 20;
printf("%d\n", a < b ? a : b);
(a < b ? a : b) = 100;//此时左边返回的是一个变量,所以能进行赋值
3、在C语言中左边也要是想返回一个变量
int a = 10;
int b = 20;
printf("%d\n", a < b ? a : b);
*(a < b ? &a : &b) = 100;//此时返回的是变量