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

news2024/12/25 23:39:24

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.coloradmin.cn/o/1876674.html

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

相关文章

基于YOLOv9+pyside的安检仪x光危险物物品检测(有ui)

安全检查在公共场所确保人身安全的关键环节&#xff0c;不可或缺。X光安检机作为必要工具&#xff0c;在此过程中发挥着重要作用。然而&#xff0c;其依赖人工监控和判断成像的特性限制了其应用效能。本文以此为出发点&#xff0c;探索了基于Torch框架的YOLO算法在安检X光图像中…

spring和springboot的关系是什么?

大家好&#xff0c;我是网创有方的站长&#xff0c;今天给大家分享下spring和springboot的关系是什么&#xff1f; Spring和Spring Boot之间的关系可以归纳为以下几个方面&#xff1a; 技术基础和核心特性&#xff1a; Spring&#xff1a;是一个广泛应用的开源Java框架&#…

深入理解一致性Hash和虚拟节点

在分布式系统中架构中我们经常提到一致性哈希算法&#xff0c;那么什么是一致性哈希算法&#xff0c;为什么需要一致性哈希算法呢&#xff1f; 1、为什么需要一致性哈希算法 假设现在有三台缓存服务器&#xff08;缓存服务器A、缓存服务器B、缓存服务器C&#xff09;&#xff…

每日一题——Python实现PAT乙级1059 C语言竞赛(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度分析 空间复杂度分析 代码优化建议 总结 我要更强 优化方法…

fastadmin selectpage下拉框默认选中

修改 /public/assets/libs/fastadmin-selectpage/selectpage.js

C++【引用】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

入门Java爬虫:认识其基本概念和应用方法

Java爬虫初探&#xff1a;了解它的基本概念与用途&#xff0c;需要具体代码示例 随着互联网的快速发展&#xff0c;获取并处理大量的数据成为企业和个人不可或缺的一项任务。而爬虫&#xff08;Web Scraping&#xff09;作为一种自动化的数据获取方法&#xff0c;不仅能够快速…

【数据分析】1、用Pandas计算数据相关性系数

相关性系数和相关分析是了解变量之间关系的重要工具。通过合理选择相关性系数和科学分析数据&#xff0c;能够有效揭示变量之间的关系&#xff0c;为进一步研究和决策提供有力支持。在实际应用中&#xff0c;应结合业务背景、数据特性和统计原则&#xff0c;谨慎解释和应用相关…

基于知识图谱的医药问答系统实战

数据及代码地址见文末 1.项目配置 (1)Neo4j数据库安装 JDK 安装:https://www.oracle.com/java/technologies/javase-downloads.html Neo4j 安装:https://neo4j.com/download-center/ 配置好 JDK 和 Neo4j 的环境变量 启动:neo4j.bat console 第一次启动有默认用户名和密…

数字信号处理教程(1)——简介

考了几天试&#xff0c;终于有时间来继续写了&#xff0c;接下来&#xff0c;我们主要对数字信号处理和通信原理这两本偏于理论书记录自己的简单看法。当然其他大家讲的比较好的地方&#xff0c;我也会摘录下来。 先来看数字信号处理的内容&#xff0c;数字信号处理中有…

Gradio 4.37.1官方教程二:Blocks

文章目录 一、Blocks及事件监听器1.1 Blocks结构1.2 事件监听器的类型1.3 多数据流1.4 多输入组件1.5 多输出组件1.6 更新组件配置1.7 添加示例1.8 连续运行事件1.9 持续运行事件1.9.1 every参数1.9.2 load方法1.9.3 change方法 1.10 收集事件数据1.11 绑定多个触发器到同一函数…

【ai】trition:tritonclient yolov4:ubuntu18.04部署python client成功

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行 client代码远程部署在ubuntu18.0…

从灵感到实践:Kimi辅助完成学术论文选题的文艺之旅

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 昨天我们为大家介绍了ChatGPT辅助完成实现设计&#xff08;AI与学术的交响&#xff1a;ChatGPT辅助下的实验设计新篇章&#xff09;。今天我们再来看看Kimi对于论文选题都能提供哪些帮助…

mindspore打卡第9天 transformer的encoder和decoder部分

mindspore打卡第9天 transformer的encoder和decoder部分 import mindspore from mindspore import nn from mindspore import ops from mindspore import Tensor from mindspore import dtype as mstypeclass ScaledDotProductAttention(nn.Cell):def __init__(self, dropout_…

如何修改PDF文档的作者名称?

要修改一个 PDF 文档的作者名称&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. **使用 Adobe Acrobat**&#xff08;如果有&#xff09;&#xff1a; - Adobe Acrobat 是一个功能强大的 PDF 编辑工具&#xff0c;支持修改文档属性信息&#xff0c;包括作者名称。打开…

SSRF一篇文章实战举例全面学懂

前言 Gopher协议在SSRF漏洞中的深入研究&#xff08;附视频讲解&#xff09; - 知乎 (zhihu.com) 上面这篇文章真的写的很好&#xff0c;是目前看过最好的将SSRF(服务端请求伪造)和Gopher协议的内容。 然后这种题型&#xff0c;我记得在之前的文章&#xff0c;金砖里有个云启…

Python 面试【★★★】

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

HIVE每日一题

select * from sku_info order by sku_id ; 为什么结果没有顺序排序。什么原因导致的&#xff1f;

第二十一课,列表的操作函数

一&#xff0c;len(列表):求列表的长度 当你需要知道一个列表中含有多少个元素时&#xff0c;可以使用len()函数&#xff0c;将列表的变量名放入len()函数的括号中&#xff0c;它将告诉你这个列表中有多少个元素&#xff0c;也就是它的长度&#xff01; 需要注意的是&#xf…

电脑文件夹里的表格删除了怎样恢复?别急,可这样做

在日常工作中&#xff0c;我们经常会使用到各种电子表格来记录、整理和分析数据。然而&#xff0c;有时由于操作失误或其他原因&#xff0c;我们可能会不小心将电脑文件夹中的重要表格删除。面对这种情况&#xff0c;许多人可能会感到惊慌失措&#xff0c;担心数据丢失会给工作…