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; // 结果为0flag = 0; // 结果为0flag = 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; // 结果为1flag = false; // 结果为0flag = 0; // 结果为0flag = 100; // 结果为1flag = -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); // 10printf("b:%d\n",b); // 100// ?号前为真,执行 :号前的表达式, :号后的不执行,所以此时 b = 20//a < b ? a : b = 100;//printf("a:%d\n", a); // 10//printf("b:%d\n", b); // 20return 0;
}