c++——增强了(全局变量、变量和函数的都要有类型、类型转换、struct结构体、bool类型和三目运算符)

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;//此时返回的是变量

你可能感兴趣的:(c++,c++,java,jvm,linux)