当前位置: 首页 > news >正文

C语言表达式和表达式的值

今天突然发现如果能很好的理解表达式和表达式的值的概念,可以使编程代码变的更整洁。很多时候我们总是忘记从最基本的概念开始考虑问题。我觉得我们有必要把C/C++标准看下,在里面肯定有很多我们一直困惑的问题的答案。


C语言是基于结构化程序设计思想的程序设计语言,结构化的程序由函数组成,而函数由语句组成。语句的标志是分号,语句去掉分号后就成了表达式。记忆关键词:常量表达式,关系表达式,运算表达式,逻辑表达式,赋值表达式,逗号表达式……


下面分别介绍各种表达式的值:

#include <stdio.h>

#define PrintInt(expr) printf("%s:%d\n",#expr,(expr))


int main(int argc,char **argv)
{
    int a=3,b=5;
    PrintInt(4);  // 常量表达式的值是其本身
    PrintInt((a>b));  // 关系表达式的值是关系比较的结果(true/false,1/0)
    PrintInt((a+b));  // 运算表达式的值是运算结果
    PrintInt((a&b));  // 逻辑表达式的值是逻辑运算结果
    PrintInt((a=4));  // ! 赋值表达式的值是=右边表达式的值
    PrintInt((a++,9));  // ! 逗号表达式的值是最后一个表达式的值
    c=a+b,b+1;    // 到目前为a=4,b=5
    PrintInt(c);  // 需要结合运算符优先级,,运算符优先级最低
    c=(a+b),b+1;
    PrintInt(c);  // 同上
    c=(a+b,b+1);
    PrintInt(c);  // 很容易理解 
    return 0 ;
}
运行结果:



简单的巧用表达式的值例子:

int a = bTest?(0):(i++,1);  // 在bTest为false的情况下使a=1,并且需要使i加1



相关文章:

  • C语言知识点考题
  • 判断一个数是否为2的幂次
  • C99标准的新特性
  • C/C++标准资料
  • 如果我再次被面试,我会问的几个问题
  • Linux 常用命令记录
  • C++关键字
  • Open Broadcaster Software源码阅读笔记
  • 简单算法--迭代/递归
  • 背包九讲笔记
  • 关于类成员函数中静态变量的一点提示
  • C++ 强制类型转换若干问题
  • 面向对象设计原则
  • C++之父FAQ阅读笔记
  • 要完成的学习或考试任务
  • java8-模拟hadoop
  • Meteor的表单提交:Form
  • PAT A1050
  • Phpstorm怎样批量删除空行?
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Zsh 开发指南(第十四篇 文件读写)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构建工具 - 收藏集 - 掘金
  • 利用DataURL技术在网页上显示图片
  • 全栈开发——Linux
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信支付JSAPI,实测!终极方案
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #if #elif #endif
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)SpringCloud 整合Python
  • (175)FPGA门控时钟技术
  • (2022 CVPR) Unbiased Teacher v2
  • (C#)获取字符编码的类
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (七)理解angular中的module和injector,即依赖注入
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET值类型变量“活”在哪?
  • .net中生成excel后调整宽度
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [Android] 修改设备访问权限
  • [Android]使用Git将项目提交到GitHub
  • [android学习笔记]学习jni编程