基础运算符号

基础运算符号

1 、C语言运算符号种类

1.1、算术运算符

用于各类数值运算。包括:加(+)、减(-)、乘(*)、除(/)、求余(或称模运算) (%)、自增(++)、自减(–)共七种。

加号运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = 20;
	int c = a + b;
	printf("c=%d",c);
	return 0;
}

减号运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = 20;
	int c = a - b;
	printf("c=%d",c);
	return 0;
}

乘号运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = 20;
	int c = a * b;
	printf("c=%d",c);
	return 0;
}

除号运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = 20;
	int c = a / b;
	printf("c=%d",c);
	return 0;
}

取余运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = 20;
	int c = a % b;
	printf("c=%d",c);
	return 0;
}

自增运算符

1.前置++运算符
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = ++a;  //int a= a+1;   int b = a;
	printf("b=%d",b);
	return 0;
}
2.后置++运算符
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = a++;     //int b = a;  a=a+1;
	printf("b=%d\n", b);//调试结果b=12;
	printf("a=%d",a);   //调试结果a=13;
	return 0;
}
++a;说明: 操作数的值被相加,而表达式的值就是操作数增加后的值。
a++;说明: 操作数的值仍被相加,而表达式的值是操作数增加前的值。

自减运算符

1.前置--
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = --a;  //int a= a-1;   int b = a;
	printf("b=%d",b);
	return 0;
}
2.后置--
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int a = 12;
	int b = a--;        //int b = a;  a=a-1;
	printf("b=%d\n", b);//调试结果b=12;
	printf("a=%d",a);   //调试结果a=11;
	return 0;
}
--a;说明: 操作数的值被减,而表达式的值就是操作数减后的值。
a--;说明: 操作数的值仍被减,而表达式的值是操作数减前的值。

注意点:

  • 在整数除法中,整数除以整数,结果还是整数,只要分子或者分母有一个小数,结果就按小数处理
  • 使用求余%符号时,不能用于float和double类型,余数的符号始终与分子(被除数)的符号一致

练习:

判断一个数是否为素数

#include <stdio.h>
int main(){
    int a=0;  // 素数的个数
    int num=0;  // 输入的整数
    printf("输入一个整数:");
    scanf("%d",&num);
    for(int i=2;i<num;i++){
        if(num%i==0){
            a++;  // 素数个数加1
        }
    }
    if(a==0){
        printf("%d是素数。\n", num);
    }else{
        printf("%d不是素数。\n", num);
    }
    return 0;
}
#include <stdio.h>
#include <math.h>
void main(){
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 
    printf("输入一个整数:");
    scanf("%d",&m);
  // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;
    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
        printf("%d是素数。\n",m);
    else
        printf("%d不是素数。\n",m);
    return 0;
}
#include <stdio.h>
#include <math.h>
int is_prime(int x) {
    for (int i = 2; i <= x / 2; ++i) {
        if (x % i == 0) {
            return 0;
        }
    }
        return 1;
}
    int main() {
        for (int i = 2; i <= 100; ++i) {
            if (is_prime(i)) {
                printf("%d\n", i);
            }
        }
        return 0;
    }

1.2、关系运算符

用于比较运算。包括:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)共六种。

关系运算符数值列表

运算符名称示例功能
>大于a>ba大于b时返回真,否则返回假
<小于a<ba小于b时返回真,否则返回假
>=大于等于a>=bA大于等于b时返回真,否则返回假
<=小于等于a<=bA小于等于b时返回真,否则返回假
==等于a==ba等于b时返回真,否则返回假
!=不等于a!=ba不等于b时返回真,否则返回假

1.3、逻辑运算符

用于逻辑运算。包括:逻辑与(&&)、逻辑或(||)、逻辑非(!)共三种。

=逻辑运算符列表=

运算符名称表达式功能
&&逻辑与x && y先判断x,当x为假时结果为假,当x为真时才判断y
||逻辑或x || y先判断x,当x为真时结果为真,当x为假时才判断y
!逻辑非!x将真假颠倒(如果x为真时结果为假,x为假时结果为真)

--------------------------------&&和||的短路特性--------------------------------

&&运算的短路特性:要使(表达式1)&&(表达式2)运算结果为真则要求:表达式1,表达式2都为真,如果表达式1为假,则不计算表达式2了,因为此时已经确定(表达式1)&&(表达式2)运算结果不可能为真

||运算的短路特性:要使(表达式1)||(表达式2)运算结果为假则要求:表达式1,表达式2都为假,如果表达式1为真,则不计算表达式2了,因为此时已经确定(表达式1)||(表达式2)运算结果不可能为假

#include<stdio.h> 
int main(void)
{
 	int a=0,b=1;
 	if(a++&&b++)
 	{
 		printf("a=%d  b=%d\n",a,b);
 	}
	 else
 	{
 		printf("a=%d  b=%d\n",a,b);	
  //因为&&短路特性,应执行此句,且b++不执行 
 	}
 	if(a++||--b)
 	{
 		printf("a=%d  b=%d\n",a,b);   
  //因为||短路特性,应执行此句,且--b不执行 
 	}
 	else
 	{
 		printf("a=%d  b=%d\n",a,b);
 	}
	return 0;
}

1.4、位运算运算符

参与运算的量,按二进制的每个位进行运算。包括:位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)共六种。

按位与运算(&)

按位与运算符"&"是双目运算符。 功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 1, b = 2, c;
    c = a & b;
    printf("a=%d\nb=%d\nc=%d\n", a, b, c);
}

按位或运算(|)

功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 1, b = 0, c;
    c = a || b;
    printf("a=%d\nb=%d\nc=%d\n", a, b, c);
}

位异或(^)

功能是相同为0,不同为1

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 1, b = 0, c;
    c = a ^ b;
    printf("a=%d\nb=%d\nc=%d\n", a, b, c);
}

位非(~)

求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 1;
    int b = ~a;
    printf("a=%d\nb=%d\n",a,b);
}

左移运算符(<<)

左移运算符,是双目运算符。左移n位就是乘以2的n次方。 其功能把,左边的运算数的各二进位全部左移若干位,由,右边的数指定移动的位数,高位丢弃,低位补0。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 1;
    int b = a<<2;//a*2^2
printf("a=%d\nb=%d\n",a,b);//a=1;b=4
}

右移运算符(>>)

右移运算符,是双目运算符。右移n位就是除以2的n次方.

其功能是把左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int a = 16;
    int b = a>>2;
    printf("a=%d\nb=%d\n",a,b);
}

1.5、赋值运算符

用于赋值运算。分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

1.6、条件运算符

条件运算符: ? : 它是唯一的一个三目运算符,用于条件求值。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int m= 1;
    int n = 2;
    int c = (m < n) ?m : n;
    printf("c=%d",c);}

1.7、求字节数运算符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
    int m= 1;
    double n = 2.5;
    float s = 52.6f;
    printf("m变量所占字节数=%d\n", sizeof(m));
    printf("n变量所占字节数=%d\n", sizeof(n));
    printf("s变量所占字节数=%d\n", sizeof(s));
}

1.8、指针运算符

指针运算符是一种计算机运算符,在C语言中有两个关于指针的运算符。

&运算符:取地址运算符,&m即是变量m在内存中的实际地址

*运算符:指针运算符 ,指针解引用操作符,它返回的是指针所指向的对象的值。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
	int* p1, * p2, a, b, c; 
	scanf_s("%d%d", &a, &b);
	p1 = &a; 
	p2 = &b;
	if (*p1 < *p2){ 
		c = *p1;
		*p1 = *p2;
		*p2 = c;
	}
	printf("%d,%d\n", a, b);
}

1.9、逗号运算符

逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
	int a, b;
	b = (a = 1, a + 1, a++);
	printf("%d %d\n", a, b);//a=2;b=1;
}

1.10、特殊运算符

主要用于数组、指针和结构体的操作。包括:括号(),下标[],成员访问(->与.)等几种。

2、c语言运算符优先级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值