百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

C 语言——运算符基础知识浅析(c语言中运算符的用法)

yund56 2025-05-11 01:46 28 浏览

关于这个运算符,这是一个很常见的知识,从在座的各位会数数起,我们就接触到了最 简单的十以内的加减法。所以,我写这篇文章的主要目的依然和前面的基础知识一样,主要 是把它拿过来,在 C 语言的基础上进行理解、实践。然后,下面我会在 Linux 环境下,实践 C 语言所有的运算符,理解它的算法、规则。

那么 C 语言中有哪些运算符呢?算术运算符、关系运算符、逻辑运算符、位运算符、赋 值运算符、特殊运算符。下面我会一一通过程序例子的形式来实现每一个运算符的用法。

  • 算术运算符浅析

如上图所示,算术运算符包含了“+、-、*、/(除)、%(取余)、++、--”。唯一要注意 的是,浮点型,也就是 float/double 类型不能进行取余操作。其次要注意的是,++(自增) 和—(自减)运算,后面它们有一个前加加、后加加,还有前减减、后减减。至于它们有何 区别呢?下面我将通过一个例程来为大家讲解一下。

#include<stdio.h>
int main(int argc, const char *argv[])
{
    int a = 20, b = 20;
    int c = 20, d = 20;
    int sum1 = 0, sum2 = 0;
    int sum3 = 0, sum4 = 0;
    a++;
    sum1+=a;
    printf("sum1=%d\n" , sum1);
    ++b;
    sum2+=b;
    printf("sum2=%d\n" , sum2);
    c--;
    sum3+=c;
    printf("sum3=%d\n" , sum3);
    --d;
    sum4+=d;
    printf("sum4=%d\n" , sum4);
    return 0;
}

好了,上述就是直接定义一个“++、--”运算符,然后直接拿下来用。就是无论如何,在定义 a++、++b、c--、--d 时,然后直接拿到下一行语句上用,它们只会该减则减,该加则 加,没有什么特殊的地方。但是,要想特殊一点,请看下面这个程序。

#include<stdio.h>
int main(int argc, const char *argv[])
{
    int a = 20, b = 20;
    int c = 20, d = 20;
    int sum1 = 0, sum2 = 0;
    int sum3 = 0, sum4 = 0;
    a++;
    sum1 += a;
    printf("sum1=%d\n" , sum1);
    printf("a++=%d\n" , a++);
    ++b;
    sum2 += b;
    printf("sum2=%d\n" , sum2);
    printf("++b=%d\n" , ++b);
    c--;
    sum3 += c;
    printf("sum3=%d\n" , sum3);
    printf("c--=%d\n" , c--);
    --d;
    sum4 += d;
    printf("sum4=%d\n" , sum4);
    printf("--d=%d\n" , --d);
    return 0;
}

上面我直接加了四条 printf 语句,就是直接输出“a++、++b、c--、--d”的结果,这时的 结果就和上面的程序得到的结果不同。我们可以看出,a++(后加加)不会先运算,它会先 赋值再运算;++a(前加加)不会先赋值,它会先运算再赋值;后面的“--”运算也是这个原理。

  • 关系运算符与逻辑运算符浅析

对于关系运算符和逻辑运算符,我们主要是从上面两张图来了解并应用一下,自己试着 编个程序,首先定义一下两个变量,对这两个变量进行关系运算并赋值,再通过 printf 打印 输出出来。而逻辑运算符,我们要在关系运算符的基础上,进一步对其进行比较,比如,逻 辑非遵从的原则是,非 0 即 1、非 1 即 0;逻辑与运算符,则是用“&&”表示,遵从短路特性、 逢 0 截止的原则,也就是,只要左右两个表达式有一个为 0,则全为 0(全 0 则 0);逻辑或 运算符,则是用“||”表示,也是遵从短路特性、逢 1 截止的原则,也就是,只要左右两个表达 式有一个为 1,则全为 1(全 1 则 1)。

#include<stdio.h>
#define X 29
#define Y 23
int main(int argc, const char *argv[])
{
    int a = 29, b = 23;
    int c,d,e,f,g,h;
    c = (a > b);
    printf("c=%d\n" , c);
    d = (a >= X);
    printf("d=%d\n" , d);
    e = (a < b);
    printf("e=%d\n" , e);
    f = (a <= Y);
    printf("f=%d\n" , f);
    g = (a == b);
    printf("g=%d\n" , g);
    h = (a != b);
    printf("h=%d\n" , h);
    return 0;
}
#include<stdio.h>
#define X 29
#define Y 23
int main(int argc, const char *argv[])
{
    int a = 29, b = 23;
    int c,d,e,f,g,h;
    c = ((a > b) && (b > a));
    printf("c=%d\n" , c);
    d = ((a >= X) && (b <= Y));
    printf("d=%d\n" , d);
    e = ((a < b) || (b < a));
    printf("e=%d\n" , e);
    f = ((a <= Y) || (b >= X));
    printf("f=%d\n" , f);
    g = (!(a == b));
    printf("g=%d\n" , g);
    h = (!(a != b));
    printf("h=%d\n" , h);
    return 0;
}
  • 位运算符运算符的优先级浅析

根据上图所示,我们一个一个来说明一下其作用。首先是位逻辑反,也就是对该变量取 反操作,比如,~11001000,那么它的取反是我们这个二进制 00110111;其次是位逻辑与,和逻辑与相比,它 差了一个“&”符号,只要左右两边的表达式有 0 存在,那就全为 0,要全 1 才为 1;然后是位逻辑或,和逻辑或相比,它差了一个“|”符号,只要左右两边的表达式有 1 存在,那就全为 1, 要全 0 才为 0;再然后是位逻辑异或,用符号“^”表示,它主要遵守的是相同为 0、不同为 1 的原则;最后还有右移位和左移位,右移位用两个右尖括号表示,即,“>>”,左移位用两个 左尖括号表示,即“<<”。

  • 赋值运算符、特殊运算符基础知识浅析

那么什么是特殊运算符呢?我们这里主要介绍条件运算符(又叫三目运算符)和sizeof运算符(计算关键字大小的一个函数)。条件运算符的一般形式是:

<表达式 1> ? <表达式 2> : <表达式 3>

这里sizeof运算符需要注意一点,他针对的仅是数据类型,而不针对变量!它的主要形式是:

sizeof(<类型或变量名>)

最后再来看两个代码,学习C语言嘛,要的就是代码量,希望大家也能够在熟悉这些基础知识后,自己多多敲敲代码、手写代码!!!

#include <stdio.h>
int main(int argc, char **argv)
{
     int count, sum; 
     count = 0; sum = 0;
     while (count++ < 10) 
     { 
         sum +=count; 
     } 
     printf("sum = %d\n", sum);
     return 0;
}
#include<stdio.h>
#define N 20
int main(int argc, const char *argv[])
{
    unsigned char x = 0x17 , y;
    y = ~x;
    printf("y=%d\n" , y);
//  char a = 20 , b = 30 , c , d;
//  c = (a ^ b);
//  d = (a ^ N);
//  printf("c=%d d=%d\n" , c , d);
//  char a = 0xe4 , b;
//  b = (a << 3);
//  printf("b=%d\n" , b);
    int e = 107 , f = 208 , g , h;
    g = ((f >= e) ? (f + 18) : (e - 100));
    printf("g=%d\n" , g);
    h = ((e += 5) , (f -= 10));
    printf("h=%d\n" , h);
    printf("sizeof(char)=%d\n" , sizeof(char));
    printf("sizeof(int)=%d\n" , sizeof(int));
    return 0;
}


END

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...