诚城的成长 诚城的成长
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)

诚城

我有N个梦想……
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)
  • C语言简介
  • 环境与工具安装
  • 输出与输入
  • 数据类型
  • 运算

    • 算术运算
      • 一元运算
        • 取反取负
        • ++ --
      • 二元运算
        • + - * / %
      • 三元运算
      • 混合运算
    • 赋值与位移
  • 条件判断与循环
  • 内存
  • 转义字符
  • 其他
  • C程序实例
  • C语言
  • 运算
诚城
2021-12-28
目录

算术运算原创

运算的优先级,从高到低:

一元运算 > 二元运算
逻辑非 ! >算术 > 逻辑与 &&、逻辑或 || > 赋值=

# 一元运算

# 取反取负

取反:!i
取负: -5

# ++ --

自增与自减,又分前后,其效果有差异!!!多用于循环。

int i=3,j=5,k;
printf("i=3,i++后的值不变: %d\n",i++);
printf("i++后下一次调用时值才变化为: %d\n",i);
printf("j=5,j--后的值不变: %d\n",j--);
printf("j--后下一次调用时值才变化为: %d\n",i);
printf("i=4,++i,值立刻改变,不用等到下一次调用 %d\n",++i);
printf("++i后下一次调用时值依旧为++i后的值: %d\n",i);
printf("j=4,--j,值立刻改变,不用等到下一次调用 %d\n",--j);
printf("--j后下一次调用时值依旧为--j后的值: %d\n",j);
int i=3,j;
// i++   i-- 同理
j=i++; // 拆分为 j=i;  i++;   j=3,i=4 
printf("i=%d   j=%d\n",i,j);

# 二元运算

# + - * / %

二元运算时,需要注意的是计算元素的数据类型是否一致,如果不一致的话,会系统会进行隐式转换(自动进行),转换成占内存字节数最大的操作数类型,自动转换顺序(由低向高)为:short,char->int->unsigned int->long int->unsigned long->float->double。也可以手动进行显示转换(强制进行),根据需要将某一表达式的值的类型强制转换为用户指定的类型,格式为:`(数据类型)变量名或表达式。

// + - * 一样的操作
int i=3,j=5,k;
float f=1.25;
printf("隐式加法 d:i+j=%d\n",i+f);  // 自动向高级转换,格式控制符错误,所以结果错误
printf("隐式加法 f:i+f=%f\n",i+f); // 自动向高级转换
printf("显式加法 d:i+f=%d\n",i + (int)f); // 强制转换float为int后进行计算
printf("显式加法 f:i+j=%f\n",(float)i + f); // 强制转换int为float后进行计算
printf("显式转换float:i+f=%f\n",(float)(i + f)); // 也可以对整个表达式进行转换
// / 除
printf("隐式除法:i/j=%d\n",i / j);// 值为float型,用%d控制输出,结果为 0 因为自动转为int  为什么??
printf("隐式除法:i/j=%f\n",i / j); // 结果为 0.000000 转为 float 型结果,并且结果也是错误的。 为什么???
printf("隐式除法 3.0:i/j=%f\n",3.0 / j); // 2个整型相除,想要float型结果,必须将其中一个墙转float型! 结果为 0.600000
printf("隐式除法 5.0:i/j=%f\n",i / 5.0); // 2个整型相除,想要float型结果,必须将其中一个墙转float型! 结果为 0.600000
printf("显式除法:i/j=%d\n",(float)i / j); // 显示结果为 5 错误,因为都是 float 型,但是却用了 %d 来控制
printf("显式除法:i/j=%f\n",(float)i / j); // 结果为 0.600000 因为没控制小数尾数,默认6位小数
printf("常量除法 d:i/j=%f\n",3.0 / j); // 结果为 0.600000
printf("常量除法 f:i/j=%d\n",3.0 / j); // 结果为 5
// & 取余
printf("取余:i%%j=%d\n",i % j); // 结果为 3 ,注意 “%%”是输出符号“%”

# 三元运算

不是算术算术运算,放在这里只是方便与“一元”、“二元”进行归类。三元运算更多用于条件判断。

判断表达式 ? 真值时内容 : 假值时内容

# 混合运算

优先级由高到低:

符号优先: ()
算法优先:* / % -> + -

#考研#820#C语言#算术运算
上次更新: 2022/08/20, 00:50:36
数据类型
赋值与位移

← 数据类型 赋值与位移→

Theme by Vdoing | Copyright © 2022-2022 carveybunt | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
×

特别申明:

本站所有内容均为个人理解或转载,如有不当之处,敬请大佬指导!