C++中的输入输出
注:因为系统会自动追加字符结束符\0 一同存储,因此VS中的安全函数scanf_s最大写入为9.
注:c中字符串之间不能直接赋值,但是结构类型的数据是可以直接赋值的。
1 #include <stdio.h> //给printf用 2 #include <stdlib.h> //给system用 3 4 #define PI 3.1415926 /*宏定义是预处理命令,不是语句,因此结尾不用分号。 5 宏定义一般用在一个常量反复出现在程序中时,宏定义好处: 6 1、方便修改维护,如果需要修改此常量,仅需修改宏即可。 7 2、增加程序的可读性 8 注意:它仅仅就是替换,不做任何计算等。 9 10 const常量有类似功能,但是const常量有数据类型。 11 */ 12 int main1() 13 { 14 char a = 'A', b = 'D',c;/*单引号引起的代表此字符的Asiic码对应数值, 15 A = 65,D= 68, ? = 133 */ 16 c = a + b; 17 printf("%c\n",c); //%c代表单个字符 18 system("pause"); 19 return 0; 20 21 } 22 int main2() 23 { 24 char a = 'A', b = 'D', c;/*单引号引的代表此字符的Asiic码对应数值, 25 A = 65,D= 68, ? = 133 */ 26 c = a + b; 27 printf("%c\n", c); //%c代表单个字符 28 system("pause"); 29 return 0; 30 31 } 32 /* 33 c语言中的数据类型 关键字 长度 位数 范围 34 字符型: char 1Byte = 8bit -128—127 35 整数: int 4Byte = 32bit -2^31—2^31-1 36 浮点型 float 4Byte = 32bit _+(10^-38—10^38) 显然一般的数用float单精度足够 37 双精度 double 8Byte = 64bit _+(10^-380—10^380) 99.9999%的可能你不需要用它! 38 39 unsigned 指的是将第一位的符号位也视为数值位,即没有负数区间,但正数区间增大一倍。 40 signed就很显然了,第一位符号位,区间上限比unsigned变小一半。 41 */ 42 /* 43 为什么1Byte = 8位? 44 这个要从美国人的所有符号说起,ASIIC码中,英文中所有符号、数字加起来不超过128,也就是7位,加上符号位8位就够了。因此用了8位。 45 但是汉字8万多,显然不行,因此有了其他编码如utf-8 46 47 网速说的10M是通信中的概念,单位实际是Mbit/s 48 因此10Mbit/s = 10/8 MByte/s = 12.5M/s 49 */ 50 51 /* 52 53 数据类型:十进制 八进制(0开头) 十六进制(0x开头) 54 65 0 101 0x 41 55 56 3255U (无符号类型 十进制) 57 0x41U (无符号类型 十六进制) 58 3.12e-2 用 e 表示 10^ 59 60 字符常量:指用一个单引号引起来的一个字符。字符常量本质上就是十进制数。 61 字符串常量:。。。。。。双引号。。。。。 62 存储字符串时,系统会识别引号结束符,然后自动给其结尾加上 NUll串结束标识符 63 如"china"实际存储时是用6个字节; c h i n a NULL 64 对应Asiic码中的存储形式为: 67 104 105 112 97 \0 65 66 转义符:双引号 反斜杠已经有具体意义了,双引号代表字符的开始和结束。 67 要打单引号:\' 68 要打双引号:\" 69 要打反斜杠:\\ 70 71 72 因为存储的最小单位是字节,因此画的存储分配内存示意图中最小的矩形框代表1个字节 73 变量的实质是一块内存空间 74 如x = 25 75 y = x-- ;后置运算符减号表示,先赋值给y,再把x减少1。 y = 25 76 y = --x ;前置运算符减号表示,先把x减少1,再赋值给y。 y = 24 77 78 类型强制转换: eg: int x = 10; 79 float y; 80 y = x ;(会警告!) 81 82 改动: y = (float)x; 安全! 83 84 */