C语言中常用的运算符、表达式和语句

C语言是一种通用的、高级的编程语言,其历史可以追溯到20世纪60年代末至70年代初。C语言最初是由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室为开发UNIX操作系统而设计的。它继承了许多B语言的特性,而B语言则是由迷糊老师(Teacher MiHu)基于BCPL(Basic Combined Programming Language)语言设计的。

C语言的命名来源于其前身B语言,而B语言则得名于BCPL的第二个字母。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器,并产生少量的机器码,同时不需要任何运行环境支持便能运行的编程语言。随着UNIX操作系统的成功,C语言也逐渐流行起来,并成为了系统级编程和嵌入式开发的首选语言之一。

在C语言的发展过程中,经历了多个版本的标准化过程。1989年,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,这一标准随后被国际化标准组织(ISO)采纳为ISO C标准(ISO 9899)。

C语言常用运算符表格

运算符类别运算符用法含义
算术运算符+5 + 3 结果为 8加法运算
算术运算符-5 - 3 结果为 2减法运算
算术运算符*5 * 3 结果为 15乘法运算
算术运算符/5 / 3 结果为 1(整数除法)除法运算
算术运算符%5 % 3 结果为 2取模运算(余数)
算术运算符++i++++i自增运算(i 的值增加 1
算术运算符--i----i自减运算(i 的值减少 1
关系运算符==5 == 3 结果为 0(假)等于
关系运算符!=5 != 3 结果为 1(真)不等于
关系运算符>5 > 3 结果为 1(真)大于
关系运算符<5 < 3 结果为 0(假)小于
关系运算符>=5 >= 3 结果为 1(真)大于等于
关系运算符<=5 <= 3 结果为 0(假)小于等于
逻辑运算符&&1 && 0 结果为 0(假)逻辑与
逻辑运算符||1 || 0结果为 1(真)逻辑或
逻辑运算符!!1 结果为 0(假)逻辑非
位运算符&5 & 3 结果为 1按位与
位运算符|5 | 3 结果为 7按位或
位运算符^5 ^ 3 结果为 6按位异或
位运算符~~5 结果依赖于系统和整数的位数按位取反
位运算符<<5 << 2 结果为 20左移
位运算符>>5 >> 2 结果为 1右移
赋值运算符=a = 5赋值运算,将5赋值给变量a
赋值运算符+=a += 3 等价于 a = a + 3加后赋值,将变量a与3的和再赋值给a
赋值运算符-=a -= 3 等价于 a = a - 3减后赋值,将变量a与3的差再赋值给a
赋值运算符*=a *= 3 等价于 a = a * 3乘后赋值,将变量a与3的乘积再赋值给a
赋值运算符/=a /= 3 等价于 a = a / 3除后赋值,将变量a除以3的商再赋值给a
赋值运算符%=a %= 3 等价于 a = a % 3模后赋值,将变量a除以3的余数再赋值给a
赋值运算符<<=a <<= 2 等价于 a = a << 2左移后赋值,将变量a的二进制表示左移2位后再赋值给a
赋值运算符>>=a >>= 2 等价于 a = a >> 2右移后赋值,将变量a的二进制表示右移2位后再赋值给a
赋值运算符&=a &= 3 等价于 a = a & 3按位与后赋值,将变量a与3的按位与结果再赋值给a
赋值运算符^=a ^= 3 等价于 a = a ^ 3按位异或后赋值,将变量a与3的按位异或结果再赋值给a
赋值运算符|=a |= 3 等价于 a = a | 3按位或后赋值,将变量a与3的按位或结果再赋值给a
条件运算符? :x > 0 ? x : -x条件表达式,如果x大于0,结果为x,否则为-x
逗号运算符,a = 5, b = 3逗号运算符,用于分隔表达式
指针运算符**ptr指针解引用,访问指针 ptr 指向的值
指针运算符&&var取地址,获取变量 var 的地址
其他运算符sizeofsizeof(int)计算对象或类型所占空间大小
其他运算符()(a + b) * c括号运算符,用于改变运算顺序

C语言常用表达式和语句表格

类别表达式/语句用法含义
算术表达式a + bint sum = a + b;计算两个变量的和
算术表达式a - bint difference = a - b;计算两个变量的差
算术表达式a * bint product = a * b;计算两个变量的乘积
算术表达式a / bint quotient = a / b;计算两个变量的商(整数除法)
算术表达式a % bint remainder = a % b;计算两个变量的余数
赋值语句a = ba = 5;将b的值赋给a
赋值语句a += ba += 3;将a与b的和赋给a
赋值语句a -= ba -= 3;将a与b的差赋给a
赋值语句a *= ba *= 3;将a与b的乘积赋给a
赋值语句a /= ba /= 3;将a除以b的商赋给a
赋值语句a %= ba %= 3;将a除以b的余数赋给a
关系表达式a == bif (a == b)检查a是否等于b
关系表达式a != bif (a != b)检查a是否不等于b
关系表达式a > bif (a > b)检查a是否大于b
关系表达式a < bif (a < b)检查a是否小于b
关系表达式a >= bif (a >= b)检查a是否大于等于b
关系表达式a <= bif (a <= b)检查a是否小于等于b
逻辑表达式a && bif (a && b)检查a和b是否都为真
逻辑表达式a || bif (a || b)检查a或b是否至少有一个为真
逻辑表达式!aif (!a)检查a是否为假
条件语句ifif (condition) { ... }如果条件为真,则执行语句块
条件语句elseif (condition) { ... } else { ... }如果条件为假,则执行另一个语句块
条件语句else ifif (condition1) { ... } else if (condition2) { ... }检查多个条件,并执行相应的语句块
循环语句whilewhile (condition) { ... }当条件为真时,重复执行语句块
循环语句do...whiledo { ... } while (condition);至少执行一次语句块,然后当条件为真时重复执行
循环语句forfor (initialization; condition; increment) { ... }根据初始化、条件和增量来重复执行语句块
分支语句switchswitch (expression) { case value1: ...; break; ... }根据表达式的值选择执行相应的语句块
分支语句caseswitch语句中使用指定一个要匹配的值
分支语句breakswitch或循环语句中使用退出switch语句或循环
分支语句defaultswitch语句中使用当没有匹配的值时执行的语句块

使用运算符和表达式制作一个简易小计算器

#include <stdio.h>    
#include <math.h>    
#include <string.h>    
#include <signal.h>    
#include <stdbool.h>    volatile sig_atomic_t done = 0;    void intHandler(int dummy) {    done = 1;    
}    int main() {    char operator[10];    double firstNumber, secondNumber;    signal(SIGINT, intHandler);    while (!done) {   printf("      _____           ____    _____      _____       _____          _____    _____      _____ \n");  printf("  ___|\\    \\     ____|\\   \\  |\\    \\    /    /| ___|\\     \\    ____|\\    \\  |\\    \\    /    /|\n");  printf(" /    /\\    \\   /    /\\    \\ | \\    \\  /    / | |    |\\     \\  /     /\\    \\ | \\    \\  /    / |\n");  printf("|    |  |____| |    |  |    ||  \\____\\/    /  /|    | |     |/     /  \\    \\|  \\____\\/    /  /\n");  printf("|    |    ____ |    |__|    | \\ |    /    /  / |    | /_ _ /|     |    |    |\\ |    /    /  / \n");  printf("|    |   |    ||    .--.    |  \\|___/    /  /  |    |\\    \\ |     |    |    | \\|___/    /  /  \n");  printf("|    |   |_,  ||    |  |    |      /    /  /   |    | |    ||\\     \\  /    /|     /    /  /   \n");  printf("|\\ ___\\___/  /||____|  |____|     /____/  /    |____|/____/|| \\_____\\/____/ |    /____/  /    \n");  printf("| |   /____ / ||    |  |    |    |`    | /     |    /     || \\ |    ||    | /   |`    | /     \n");  printf(" \\|___|    | / |____|  |____|    |_____|/      |____|_____|/  \\|____||____|/    |_____|/      \n");  printf("   \\( |____|/    \\(      )/         )/           \\(    )/        \\(    )/          )/         \n");  printf("    '   )/        '      '          '            '    '          '    '           '          \n");  printf("        '                                                                                 \n");     printf("欢迎使用GayBoy计算器\n");    printf("请输入运算符 (+, -, *, /, ^, sqrt, sin, cos, tan, 或输入 'exit' 退出): ");    scanf("%s", operator);    // 检查是否为退出命令  if (strcmp(operator, "exit") == 0) {  done = 1;  continue;  }  if (strcmp(operator, "sqrt") == 0 || strcmp(operator, "sin") == 0 || strcmp(operator, "cos") == 0 || strcmp(operator, "tan") == 0) {    printf("输入一个数字:");    scanf("%lf", &firstNumber);    } else {    printf("输入两个数字(用空格分开):");    scanf("%lf %lf", &firstNumber, &secondNumber);    }    if (strcmp(operator, "+") == 0) {    printf("%.1lf + %.1lf = %.1lf\n", firstNumber, secondNumber, firstNumber + secondNumber);    } else if (strcmp(operator, "-") == 0) {    printf("%.1lf - %.1lf = %.1lf\n", firstNumber, secondNumber, firstNumber - secondNumber);    } else if (strcmp(operator, "*") == 0) {    printf("%.1lf * %.1lf = %.1lf\n", firstNumber, secondNumber, firstNumber * secondNumber);    } else if (strcmp(operator, "/") == 0) {    if (secondNumber != 0.0)    printf("%.1lf / %.1lf = %.1lf\n", firstNumber, secondNumber, firstNumber / secondNumber);    else    printf("除数为0,无法进行除法运算。\n");    } else if (strcmp(operator, "^") == 0) {    printf("%.1lf ^ %.1lf = %.1lf\n", firstNumber, secondNumber, pow(firstNumber, secondNumber));    } else if (strcmp(operator, "sqrt") == 0) {    printf("sqrt(%.1lf) = %.1lf\n", firstNumber, sqrt(firstNumber));    } else if (strcmp(operator, "sin") == 0) {    printf("sin(%.1lf) = %.1lf\n", firstNumber, sin(firstNumber));    } else if (strcmp(operator, "cos") == 0) {    printf("cos(%.1lf) = %.1lf\n", firstNumber, cos(firstNumber));    } else if (strcmp(operator, "tan") == 0) {    printf("tan(%.1lf) = %.1lf\n", firstNumber, tan(firstNumber));    } else {    printf("错误!运算符不正确\n");    }    }    printf("程序已退出。\n");    return 0;    
}

运行效果如下
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/37757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全与加密常识(0)安全与加密概述

文章目录 一、信息安全的基本概念二、加密技术概述三、常见的安全协议和实践四、加密的挑战与应对 在数字时代&#xff0c;信息安全和加密已成为保护个人和企业数据不受侵犯的关键技术。本文将探讨信息安全的基础、加密的基本原理&#xff0c;以及实用的保护措施&#xff0c;以…

RAG一文读懂!概念、场景、优势、对比微调与项目代码示例

本文结合“基于 ERNIE SDKLangChain 搭建个人知识库”的代码示例&#xff0c;为您讲解 RAG 的相关概念。 01 概念 在2020年 Facebook AI Research(FAIR)团队发表一篇名为《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》的论文。这篇论文首次提出了 RA…

Java应用cpu过高如何分析

1. 查看进程cpu使用情况 top 2. 根据PID查看指定进程的各线程的cpu使用情况 top -H -p PID 线程分析&#xff1a; jstack&#xff1a;生成Java线程堆栈&#xff0c;用于分析是否有线程处于忙等待状态或死循环。命令&#xff1a; shell jstack -l <pid> > threaddu…

机器人控制系列教程之关节空间运动控制器搭建(1)

机器人位置控制类型 机器人位置控制分为两种类型&#xff1a; 关节空间运动控制—在这种情况下&#xff0c;机器人的位置输入被指定为一组关节角度或位置的向量&#xff0c;这被称为机器人的关节配置&#xff0c;记作q。控制器跟踪一个参考配置&#xff0c;记作 q r e f q_{re…

免费翻译API及使用指南——百度、腾讯

目录 一、百度翻译API 二、腾讯翻译API 一、百度翻译API 百度翻译API接口免费翻译额度&#xff1a;标准版&#xff08;5万字符免费/每月&#xff09;、高级版&#xff08;100万字符免费/每月-需个人认证&#xff0c;基本都能通过&#xff09;、尊享版&#xff08;200万字符免…

学习阳明心学,需要下真功夫,持续用功

阳明心学是功夫之学&#xff0c;看到善的就发扬光大&#xff0c;看到恶的就立即改正&#xff0c;这才是真功夫

Java基础(五)——ArrayList

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

centos7 xtrabackup mysql 基本测试(5)mysql 建立 测试 数据库及内容

centos7 xtrabackup mysql 基本测试&#xff08;5&#xff09;mysql 建立 测试 数据库及内容 登录 mysql -u etc -p 1234aA~1创建数据库 名字是company show databases ; create database company;在 company里面 创建表employee use company; DROP TABLE IF EXISTS employ…

linux中的各种指令

按文件的大小进行查找 find / usr -size 100M 在home路径下创建txt文件 touch test.txt 查看test.txt文件中的内容&#xff1a; cat test.txt通过指令pwd可以查看当前所处路径。 切换超级用户的指令&#xff1a; su - root 离开时可以使用指令&#xff1a;exit grep指…

20240629在飞凌开发板OK3588-C上使用Rockchip原厂的SDK跑通I2C扩展GPIO芯片TCA6424ARGJRR

20240629在飞凌开发板OK3588-C上使用Rockchip原厂的SDK跑通I2C扩展GPIO芯片TCA6424ARGJRR 2024/6/29 18:02 1、替换DTS了&#xff1a; Z:\repo_RK3588_Buildroot20240508\kernel\arch\arm64\boot\dts\rockchip viewproviewpro-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot2024…

网易云音乐数据爬取与可视化分析系统

摘要 本系统采用Python语言&#xff0c;基于网易云音乐&#xff0c;通过数据挖掘技术对该平台的音乐数据进行了深入的研究和分析&#xff0c;旨在挖掘出音乐市场的规律&#xff0c;为音乐人、唱片公司、音乐爱好者等提供数据支持。系统的开发意义在于&#xff1a;一方面为音乐…

C#基于SkiaSharp实现印章管理(3)

本系列第一篇文章中创建的基本框架限定了印章形状为矩形&#xff0c;但常用的印章有方形、圆形等多种形状&#xff0c;本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。   定义印章背景形状枚举类型&#xff0c;矩形、圆形、椭圆相关的尺寸…

mathcup大数据竞赛论文中集成学习(或模型融合)的运用分析

ps: (模型融合和集成学习是两个紧密相关但又有所区别的概念。集成学习是一种更广泛的范式&#xff0c;而模型融合可以被视为集成学习的一种特殊形式或策略。) 1.集成学习原理 图1 如图1所示&#xff0c;集成学习是一种通过结合多个机器学习模型的预测来提高整体性能的策略。其…

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速

20240629在NanoPi R6C开发板的预编译的Android12下使用iperf3测试网速 2024/6/29 11:11 【表扬一下】友善之臂没有提供update.img的预编译固件&#xff0c;我心里一凉&#xff0c;这么多IMG文件&#xff0c;得一个一个选择呀&#xff01; 但是别人友善之臂特别急人之所急&#…

6.27-6.29 旧c语言

#include<stdio.h> struct stu {int num;float score;struct stu *next; }; void main() {struct stu a,b,c,*head;//静态链表a.num 1;a.score 10;b.num 2;b.score 20;c.num 3;c.score 30;head &a;a.next &b;b.next &c;do{printf("%d,%5.1f\n&…

Flink 从入门到放弃

0 写在前面 程序员闯荡江湖的一生都在与数据打交道&#xff0c;初入江湖时基于 MySQL 的 CRUD&#xff0c;渐入佳境后利用 Redis 实现查询加速及分布式控制&#xff0c;本质上都是数据处理&#xff1b;无论主动/被动&#xff0c;都在利用数据来达成业务/技术目的。自然而然的&a…

javaSE知识点整理总结(下)、MySQL数据库

目录 一、异常 1.常见异常类型 2.异常体系结构 3.异常处理 &#xff08;1&#xff09;finally &#xff08;2&#xff09;throws 二、JDBC 1.JDBC搭建 2.执行SQL语句两种方法 三、MySQL数据库 1.ddl 2.dml 3.dql &#xff08;1&#xff09;字符函数 &#xff08;…

Linux开发讲课22---I2C读写 EEPROM 实验(含代码)

EEPROM 是一种掉电后数据不丢失的存储器&#xff0c;常用来存储一些配置信息&#xff0c;以便系统重新上电的时候加载之。 EEPOM 芯片最常用的通讯方式就是 I2C 协议&#xff0c;本小节以 EEPROM的读写实 验为大家讲解 STM32 的 I2C 使用方法。实验中 STM32 的 I2C 外设采用主模…

Hadoop3:Yarn框架的三种调度算法

一、概述 目前&#xff0c;Hadoop作业调度器主要有三种&#xff1a;FIFO、容量&#xff08;Capacity Scheduler&#xff09;和公平&#xff08;Fair Scheduler&#xff09;。Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 …

改机软件有哪些?实现一键新机、改串号、改IMEI和手机参数的需求 硬改手机软件,新机环境模拟 设备伪装,一键改机,一键复原

这次针对可以直接开端口修改参数的机型做一些工具解析 前面接触合作过很多工作室。其中很多工作室对于各自软件的跳验证有各自的需求。 一个机型各项参数一般有IMEI WiFi 蓝牙 sn psb ESN等等。 针对这些参数的修改首先要明白各自软件检测的具体是哪些参数来验证。 对于常用…