个人外贸网站建设,搞软件开发工资高吗,网络规划设计师月薪多少,网站怎么设置标题实用性加强#xff1a;
int main()
{// C语言中的变量都必须在作用域开始的位置定义#xff01;#xff01;// C中更强调语言的“实用性”#xff0c;所有的变量都可以在需要使用时再定义。for (int i 0; i 10; i){std::cout i std::endl;}return…实用性加强
int main()
{// C语言中的变量都必须在作用域开始的位置定义// C中更强调语言的“实用性”所有的变量都可以在需要使用时再定义。for (int i 0; i 10; i){std::cout i std::endl;}return 0;
}
register关键字的变化
register关键字请求“编译器”将局部变量存储于寄存器中
C语言中无法取得register变量地址在C中依然支持register关键字
1、C编译器有自己的优化方式不使用register也可能做优化
2、C中可以取得register变量的地址C编译器发现程序中需要取register变量的地址时register对变量的声明变得无效。早期C语言编译器不会对代码进行优化因此register变量是一个很好的补充。#include stdio.hint main4_1()
{// 申请寄存器变量register int a 10;// 在C中 如果对一个寄存器变量进行取地址操作该变量将被改回普通变量// register定义将会失效printf (a %p, a %d\n, a, a);return 0;
}
变量检测加强
#include stdio.h// 在C语言中重复定义多个全局变量是合法的
// 这些同名的全局变量最终都会被链接全局数据区的同一个地址空间上
int g_a;
int g_a 1;int main()
{printf (%d\n, g_a);printf (%p\n, g_a);return 0;
}在C语言中只有一个全局作用域
C语言中所有的全局标识符共享同一个作用域
标识符之间可能发生冲突 在C中不允许定义多个同名的全局变量
struct类型加强
C语言的struct定义了一组变量的集合C编译器并不认为这是一种新的类型
C中的struct是一个新类型的定义声明#include stdio.hstruct Student
{char name[20];int age;void print(){printf (id %d, name %s\n, id, name);}
};int main()
{// C语言中 struct 定义了一组数据的集合而不是一种新的数据类型// 所以在定义变量的时候需要在前面加上 struct 关键字进行修饰// C中 struct 定义了一种新的数据类型可以直接用来定义变量Student stu1 {xiaoming, 10};// 2、结构体中可以放函数stu.print();printf (size %d\n, sizeof(Student));return 0;
}
函数参数
#include stdio.h// 如果一个函数没有参数C认为这是一个无参函数不能给函数传参
void func()
{printf (hello world\n);
}// C语言中一个无参函数定义是用void进行填充
void func1(void) // 等价于 func1()
{}// C中函数参数必须要有类型
void func2(int a)
{printf (%d\n, a);
}int main1_1()
{func();// func(1.2,4,5,adasd);// func1(1,2.3);// func2(3.2);return 0;
}
新增bool类型
C中的布尔类型C在C语言的基本类型系统之上增加了boolC中的bool可取的值只有true和false理论上bool只占用一个字节如果多个bool变量定义在一起可能会各占一个bit这取决于编译器的实现true代表真值编译器内部用1来表示false代表非真值编译器内部用0来表示bool类型只有true非0和false0两个值C编译器会在赋值时将非0值转换为true0值转换为false#include stdio.hint main2_3()
{bool b true;if (b) // 判断是否为真{}if (!b) // 判断是否为假{} float f 0.0000000000001;if (f 0.000001 0 f - 0.000001 0) // 与0进行比较{}return 0;
}// bool类型值有2中true 和 false true 的值 是1 false 值是 0
// 用 0 来表示 false 非0 表示 true
int main2_2()
{bool b false;int a 0;b a - 1;b;b -100;printf (%d\n, b);return 0;
}int main2_1()
{printf (%d\n, true);printf (%d\n, false);return 0;
}
三目运算符
#include stdio.h// C语言中表达式的结果 放在什么地方 寄存器
// 表达式返回的是一个值是一个数
// 在C中表达式返回的是变量本身// 2 如何做到的
// 让表达式返回一个内存空间..内存的首地址 指针
// 在C语言中如何实现C的效果// 3 本质
// C编译器自己做了取地址的操作
int main()
{int a 10;int b 20;// C中三目运算符返回的是变量本身所以可以作为左值使用(a b ? a : b) 90;// 在C语言中让三目运算符可以当左值使用可以通过返回变量地址实现*(a b ? a : b) 90;printf (%d, %d\n, a, b);return 0;
}
1C语言返回变量的值 C语言是返回变量本身C语言中的三目运算符返回的是变量值不能作为左值使用C中的三目运算符可直接返回变量本身因此可以出现在程序的任何地方2注意三目运算符可能返回的值中如果有一个是常量值则不能作为左值使用(a b ? 1 : b ) 30;3C语言如何支持类似C的特性呢
当左值的条件要有内存空间C编译器帮助程序员取了一个地址而已