c06c++增强.cpp
#include <iostream>
using namespace std;
// 1、全局变量检测增强:可以检测出重定义 (c语言不会报错,但是C++会报错)
//int a;
//int a = 10;
// 2、函数检测增强: 函数返回值类型、形参类型、实参个数
int sum(int a, int b)
{
return a + b;
}
// 4、struct增强:c++创建结构体变量时候,struct 关键字可以省略
struct students5
{
int age;
// C语言的结构体中不能加函数,但C++中结构体可以有函数成员
void fun1() {
age++;
};
};
// 7、const增强
// 全局的const
const int a = 100; // 栈中申请的空间.受到常量区保护,运行修改失败
int main6()
{
/*int res = sum(1, 3);
printf("res:%d", res);
cout << "hello world" << endl;*/
// 3、类型转换检测的增强,等号前后的数据类型要一致,要强转,否则要报错
// char* p = (char *)malloc(100);
// 4、struct 结构体增强
// struct students5 stu;
// c++创建结构体变量时候,struct 关键字可以省略
students5 stu;
stu.age = 10;
stu.fun1();
cout << "age: " << stu.age << endl;
// 5、 bool增强
bool flag = true; // 结果为1
//flag = false; // 结果为0
flag = 0; // 结果为0
flag = 100;
flag = -100; // 非零,结果都是1 1为真 0为假
cout << flag << endl;
cout << sizeof(flag) << endl;
cout << sizeof(bool) << endl; // bool 类型占 1字节 空间
// 6、三目运算符增强
//int a = 10;
//int b = 20;
// ?前面为真,返回 :前的a
// ? 前面为假,返回 :后的b
//printf("res: %d\n",a > b ? a : b);
// C 中三目运算符返回的是 值 C++中三目运算符返回的是 变量 所以此种写法C中错误,C++可以
// C++中三目运算符 返回的是 变量 此时返回的是b ,而后再给 b 赋值100
// : 号前是一个表达式 :号后是一个完整的表达式
//a > b ? a : b = 100;
//printf("a:%d\n",a); // 10
//printf("b:%d\n",b); // 100
// ?号前为真,执行 :号前的表达式, :号后的不执行,所以此时 b = 20
//a < b ? a : b = 100;
//printf("a:%d\n", a); // 10
//printf("b:%d\n", b); // 20
// 7、const 增强
// a = 200; // 全局常量不可以修改
// int* p = &a;
// int* p = (int*) & a;
// *p = 200; // 全局常量指针写法,不可以修改
// printf("======================================");
// printf("a:%d\n",a);
// printf("======================================");
// 局部const
// const int b = 20;
//b = 300; // 局部常量不可以修改
//int* p =(int*) & b; // 局部常量指针写法,不可以修改
//*p = 300;
//printf("b:%d\n",b); // b:20
//int arr1[b]; // c++中 const修饰的变量 称为常量,可以用在数组的初始化
return 0;
}
c06c++增强.cpp
#include <iostream>
using namespace std;
// 1.全局变量检测增强:可以检测出重定义(c语言不会报错,但是c++会报错)
// int a;
// int a = 10;
// 2.函数检测增强:函数返回值类型、形参类型、实参个数
int sum(int a, int b)
{
return a + b;
}
// 4.struct增强:c++ 创建结构体变量的时候,struct 关键字可以省略
struct students5
{
int age;
// C语言的结构体中不能加函数,但C++中结构体可以有函数成员
void fun1()
{
age++;
};
};
// 7.const增强
// 全局的const
const int a = 100; // 栈中申请的空间,受到常量区保护,运行修改失败
int main()
{
int res = sum(1,3);
printf("res:%d\n",res);
// 3.类型转换检测的增强,等号前后的数据类型要一致,要强转,否则报错
char* p = (char* )malloc(100);
// 4.struct 结构体增强
// struct students5 stu;
// c++ 创建结构体变量时候,struct 关键字可以省略
students5 stu;
stu.age = 10;
stu.fun1();
cout << "age: " << stu.age << endl;
// 5. bool增强
bool flag = true; // 结果为1
flag = false; // 结果为0
flag = 0; // 结果为0
flag = 100; // 结果为1
flag = -100; // 非零,结果就都是1 1为真 0为假
cout << flag << endl;
cout << sizeof(flag) << endl;
cout << sizeof(bool) << endl; // bool 类型占 1字节空间
// 6.三目运算符增强
int a = 10;
int b = 20;
// ?前面为真,返回 :前的a
// ? 前面为假,返回 :后的b
// printf("res:%d\n", a > b ? a : b);
//C中三目运算符返回的是值 C++中三目运算符返回的是 变量 所以此种写法C中错误,C++可以
// C++中三目运算符 返回的是 变量 此时返回的是b ,而后再给 b 赋值100
// : 号前是一个表达式 :号后是一个完整的表达式
a > b ? a : b = 100;
printf("a:%d\n",a); // 10
printf("b:%d\n",b); // 100
// ?号前为真,执行 :号前的表达式, :号后的不执行,所以此时 b = 20
//a < b ? a : b = 100;
//printf("a:%d\n", a); // 10
//printf("b:%d\n", b); // 20
return 0;
}