欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

c语言整行乘非整形等于什么意思,C语言--整形升级寻常算术转换

发布时间:2024/9/27 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c语言整行乘非整形等于什么意思,C语言--整形升级寻常算术转换 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

【三个概念】

1.表达式:

由运算符、变量和常量组成的具有一个确定结果(值)的一个式子。

-->算术表达式:如 x + 5 * y

-->关系表达式:如 x >= 5, x == 8

-->逻辑表达式:与、或、非,&& || ~

-->赋值表达式:如 x = y +7

-->条件表达式:如 x > y ? 1 : 0

-->逗号表达式:有逗号运算符的表达式

求解表达式:①混合运算规则;②优先级规则;③ 结合性规则。

2.语句:

指的是当程序运行时执行某个动作的语法结构。它改变变量的值,产生输出,或处理输入。C语言包括4类语句:

-->表达式语句:末尾加上分号,expression;如,函数调用语句和赋值语句

-->语句块:由大括号{}括起来的一系列语句

-->空语句:只有一个分号

-->控制语句:3类,循环语句,选择/条件语句,特殊语句(return,continue,break)

3.算术运算:

二元算术运算符:加减乘除取模,+ - / * %

一元算术运算符: + -,强调数的正负

【整形升级】

也称类型提升,是指:

char, shaort int或者int型位段(bit-field),包括它们的有符号或无符号变型,以及枚举类型,可以使用在int或unsigned int的[!表达式!]]中。

如果int可以完整表示源类型的所有值,那么该源类型的值就转换为int,否则转换为unsigned int。

【寻常算术转换】

当执行[!算术运算!]时,操作数的类型如果不同,就会发生转换。

规则:

①若其中一个是long double类型,另一个也被转换成long double;

②若其中一个是double类型,另一个也被转换成double;

③若其中一个是float类型,另一个也被转换成float。

若不满足上述三条,则两个数进行整型升级:

①若其中一个是unsigned long int类型,另一个也被转换成unsigned long int;

②若其中一个是long int类型,另一个是unsigned int,

如果long int能够完整表示unsigned int的所有值,那么unsigned int转换为long int,

如果long int不能够完全表示unsigned int所有值,那么两个操作数都被转换成unsigned int。

③若其中一个是 long int 类型,另一个也被转换成long doublelong int;

④若其中一个是 unsigned int 类型,另一个也被转换成unsigned int;

⑤若以上四条都不满足,则两个数都转换成 int。

【K&R C和ANSI C区别】

K&R C:无符号保留原则,当一个无符号类型与int或更小的整型混合使用时,结果类型是无符号类型。

ANSI C:值保留原则,操作数类型不同就进行转换,朝着浮点精度更高,长度更长的方向转换。

【总结】

通常情况下,在对int类型的数值作运算时,CPU的运算速度是最快的。在x86上,32位算术运算的速度比16位算术运算的速度快一倍。

C语言是一个注重效率的语言,所以它会作整型提升,使得程序的运行速度尽可能地快。

因此,你必须记住整型提升规则,以免发生一些整型溢出的问题。

总结

以上是生活随笔为你收集整理的c语言整行乘非整形等于什么意思,C语言--整形升级寻常算术转换的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。