学习编程,光看是永远学不会的,的注重实践能力,对其多思考,在理解的基础上多去敲,日积月累,就会对编程有感觉以及兴趣,遇到困难,遇到挫折,很正常,克服就好。
数据类型:计算机对数据的识别方式和存储长度。
计算机只能识别 0 和 1 ,对于 1001 0110 其解释方式有很多,不同的数据类型其解释就不一样。
1001 0110:我可以理解为:无符号数,整型、补码、浮点数、ASCII 码、指针(字节编号),等,怎么确定到底是哪一个?取决于数据类型。
计算机总是以 2 的整数次幂个字节来存储数据,因此常见的长度为:1B、2B、4B、8B。
数据类型有 2 个关键要素,识别方式和长度。
上面的两个要素,必须都明确的指出,如果有一个不确定,则不能形成有效的数据类型。
标识符 | 长度 | 名称 | 识别方式 |
---|---|---|---|
char | 1B | 字符型 | ASCII码 |
short | 2B | 短整型 | 补码 |
int | 4B | 整型 | 补码 |
long | 8B | 长整型 | 浮点 |
float | 4B | 单精度 | 浮点 |
double | 8B | 双精度 | 浮点 |
* | 8B | 地址/指针 | 字节编号 |
优先级由高到低:()、+/-(正/负号)、*、/、%、+、-;
- / 除法:整型除以整型,结果是整型(截取整数部分);
- %取余数:只能是整型量参与运算:char、short、int、long;
- abs(x) ==> |x|(适用于整型数值)
- fabs(x) ==> |x|(适用于浮点值)
- sqrt(x) ==> 求 x 的算法平方根
- pow(x,y) ==> x 的 y 次方
- exp(x) ==> e 的 x 次方
- log(x) ==> ln(x)
- log10(x) ==> lg(x)
- sin(x) ==> sin(x)
- cos(x) ==> cos(x)
常见:>、<、>=、<=、!=、==
关系运算符的优先级低于算术运算符。
关系运算符的运算结果:只有 1(真) 和 0(假)
printf("%d\n", (2 > 1) * 5);
其实这样运算的:优先级() > ,所以先进行 2 > 1的运算,其结果为真,也就是 1,15=5,其最终的输出就为:5。
写一个 x 大于 2 小于 10 的数学表达式,10 > x > 2,C语言认为这个写法是错误的,我们是在写程序,不是在写数学表达式,一定的记住:数学表达式跟程序还是有很大的差异的,正确写法:2 < x && x < 10。
常见:!、&&、||
!(单目运算符:只有一个操作对象),高于双目运算符的优先级。
对于逻辑运算符,C 语言会将两侧的当做表达式看待,其最终的结果是:0 为假,非 0 为真,是一个逻辑的判断。
除了赋值运算符外,其他任何运算都不能改变变量的值;不能对常量或者表达式进行赋值运算。
赋值的本质:覆盖,覆盖空间中的原值。
=:仅仅比 , 运算符优先级高,变量 = 表达式;
+=、-=、*=、/=、%=,仅仅比 , 运算符优先级高;
n *= 4+6; <==> n = n * (4 + 6);
引入的意义:可以对 C 中变量名称过长得到解决。
- ++、--:运算符的本质是赋值运算符;
- 均为单目运算符,优先级高于所有的双目,且优先级低于 !(逻辑非);
- ++i:先对变量 i 增 1,在参加其后所有运算;
- i++:先用原值参加后续运算,本条语句执行完毕,在自增 1;
- ?: 其优先级仅仅高于赋值运算符;
- 语法:条表 ? 表1 : 表2,看前面表达式的结果,为真执行表 1,为假执行表 2;
- 得到 a 和 b 中的最大值:a > b ? a : b;
逗号运算符的优先级是最低的,逗号是用来分隔多个表达式的,其运算结果是:最后一个表达式的运算结果。
- 一次只比较两个相邻运算符;
- 一次只处理相邻两个运算符中的一个;
- 当前运算符是否运算,取决于与相邻运算符的优先级比较结果:当前运算符 “低于” 其后的运算符,则不运算,否则,就运算;
在参加运算的两个运算数的数据类型不一样,C 语言会对其进行自动的类型转换工作,其原则如下:
- 由短类型向长类型进行靠拢,由简单类型向复杂类型靠拢;
- char-->short-->int-->float-->double;
语法:(数据类型名称)表达式;
source = (double) 1 / 5 //其结果就是double类型
强制类型转换:仅仅是对这个变量的值进行转换,是绝对不可能改变变量的数据类型,且也是运算符,是单目运算符中优先级最低的。
逻辑运算中的0、1铁律:
- 0 && A ==> 0、1 && A ==> A
- 0 || A ==> A、1 || A ==> 1
短路运算是仅仅发生在逻辑运算表达式中。
在 && 运算符的左侧表达式的值为 0,或在 || 的左侧为非 0 ,此时整个逻辑表达式的结果已经确定,C 语言会发生短路运算,即对于右侧表达式不予运算。
- 输入、输出是通过 C 语言调用 printf() scanf() 函数实现的;
- 格式符是决定数值以怎样的方式展现出来;
- 在scanf()函数的" "中,除了写格式符之外,不要写任何其它东西,"%d%s%c"写成这样就好了;
原创文章链接:C 语言程序设计-->数据类型及运算符