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.pswp.cn/diannao/37757.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37757.shtml
英文地址,請注明出處:http://en.pswp.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…

激光SLAM平面點的提取、使用學習

1.20240625 學習了PaGO-LOAM 論文地址&#xff1a; PaGO-LOAM: Robust Ground-Optimized LiDAR Odometry github地址&#xff1a; GitHub - url-kaist/AlterGround-LeGO-LOAM: The page for PaGO-LOAM: Robust Ground-Optimized LiDAR Odometry 其提取地面點方法采用了Pat…

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指…

SPSS相關軟件安裝

Amos安裝添加鏈接描述 SPSS process插件安裝添加鏈接描述

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…

【OCPP】ocpp1.6協議第4.10章節StopTransaction的介紹及翻譯

目錄 4.10、停止交易StopTransaction-概述 Stop Transaction StopTransaction.req 請求消息 StopTransaction.conf 確認消息 交易管理流程 應用場景 總結 4.10、停止交易StopTransaction-原文譯文 4.10、停止交易StopTransaction-概述 在OCPP 1.6協議中的第4.10章“Stop Transa…

網易云音樂數據爬取與可視化分析系統

摘要 本系統采用Python語言&#xff0c;基于網易云音樂&#xff0c;通過數據挖掘技術對該平臺的音樂數據進行了深入的研究和分析&#xff0c;旨在挖掘出音樂市場的規律&#xff0c;為音樂人、唱片公司、音樂愛好者等提供數據支持。系統的開發意義在于&#xff1a;一方面為音樂…

《妃夢千年》第十六章-第十八章:戰火連天

第十六章&#xff1a;戰火連天 經過幾個月的相對平靜&#xff0c;林清婉和蘇珊逐漸適應了宮中的生活。然而&#xff0c;林清婉心中依然保持警惕&#xff0c;她知道&#xff0c;宮中的危機遠未結束。 一天&#xff0c;林清婉正在書房中整理書籍&#xff0c;忽然接到了一封來自…

C++初階編程:list容器的簡單模擬實現

大家好啊&#xff0c;今天給大家帶來的是我們C編程中&#xff0c;stl庫里的重要角色--list的簡單的模擬實現&#xff0c;希望通過這篇小博客&#xff0c;對大家更加深入理解list容器有所幫助。 前言&#xff1a; 在C標準庫中&#xff0c;list是一種雙向鏈表容器。 這里簡單提…

C#基于SkiaSharp實現印章管理(3)

本系列第一篇文章中創建的基本框架限定了印章形狀為矩形&#xff0c;但常用的印章有方形、圓形等多種形狀&#xff0c;本文調整程序以支持定義并顯示矩形、圓角矩形、圓形、橢圓等4種形式的印章背景形狀。 ??定義印章背景形狀枚舉類型&#xff0c;矩形、圓形、橢圓相關的尺寸…

mathcup大數據競賽論文中集成學習(或模型融合)的運用分析

ps: (模型融合和集成學習是兩個緊密相關但又有所區別的概念。集成學習是一種更廣泛的范式&#xff0c;而模型融合可以被視為集成學習的一種特殊形式或策略。) 1.集成學習原理 圖1 如圖1所示&#xff0c;集成學習是一種通過結合多個機器學習模型的預測來提高整體性能的策略。其…

全國今日油價查詢-全國今日油價查詢接口-API接口

關于油價的信息&#xff0c;以下是詳細的分點表示和歸納&#xff1a; 最新油價調整&#xff1a; 時間&#xff1a;2024年6月28日0時 調整內容&#xff1a;汽油價格上調210元/噸&#xff0c;柴油價格上調200元/噸。 漲幅&#xff1a;加油站油價上漲0.16元/升-0.20元/升。 具體油…

20240629在NanoPi R6C開發板的預編譯的Android12下使用iperf3測試網速

20240629在NanoPi R6C開發板的預編譯的Android12下使用iperf3測試網速 2024/6/29 11:11 【表揚一下】友善之臂沒有提供update.img的預編譯固件&#xff0c;我心里一涼&#xff0c;這么多IMG文件&#xff0c;得一個一個選擇呀&#xff01; 但是別人友善之臂特別急人之所急&#…