C语言 运算符及练习

一、内容提要

1、易错运算符;

二、内容详解

1、易错运算符:

○1 ++,--,注意区分前置和后置。

int i = 10;

int j = ++i;//i为11,j为11

i = 10;

int k = i++;//i 为 11,k 为 10

○2 /,注意整除问题,即整数除以整数结果为整数,舍弃末尾的小数;不能除 0。

○3 <<,按位左移,右边统一补 0。

○4 >>按位右移,如果是有符号数左边补符号位,如果是无符号数左边补 0。

○5 < , >小于,大于符号,注意不能连续比较

int a = 10;
int b = 5;
if(a>b>2)//输出“假”
{
printf("真\n");
}
else
{
printf("假\n");
}

○6 将等号“==”错写成赋值符号“=”

int a = 10;
if(a = 100)//输出“真”,”==”才是假,建议写成 if(100 == a)
{
printf("真\n");
}
else
{
printf("假\n");
}

○7 C 语言中” ^ ”是按位异或,不要误认为数学“指数”符号。

 int a = 10^3;//结果为 9,不是 1000


运算符:
   bool:true(真),false(假)  C99
   逻辑谓词: !(非),&&(且),||(或)
        真:非0
        假:0
        表达式1 && 表达式2:表达式1为真且表达式2为真,才为真 (都为真才为真)
        表达式1 || 表达式2:表达式1为真或者表达式2为真就为真(只要有一个为真就为真)
         &&和||的考点:短路现象 (在&&,表达式1为假则表达式2不计算;在||,表达式1为真则表达式2不计算)
    位运算符:针对二进制 (假设下面的数字为1字节) 1字节 = 8位
      十进制转二进制:凑的办法  128  64  32 16 8 4 2 1
         80转二进制:  0101 0000
         100转二进制:0110 0100
         12:0000 1100
         13:0000 1101
         ~12:1111 0011 按位取反 
         13&12:0000 1100 按位与,相同的位都为1才为1
         13 | 12:0000 1101 按位或,相同的位有一个为1就为1
         13^12:0000 0001 按位异或,相同的位不一样才为1.注意和数学的指数区分
         13<<1:000 11010 26=13*2 按位左移,右边统一补0
         13<<2:00 110100 52=13*4
         13>>1:00000 110 6=13/2 按位右移,左边补符号位
/:除法,整除:整数除以整数,结果也是整数(丢弃小数) ,用的多,考的多
%:取余:获取整除后的余数.可以用来判断是否整除
=:赋值,将右边的值赋值给左边
==:等号
!=:不等号
3*4:
>:易错,不能连续比较
表达式1 ? 表达式2 : 表达式3 .  表达式1为真则执行表达式2,表达式1为假则执行表达式


#include <stdio.h>
//求两个数的最大值
int main()
{
    int a;
    int b;
    scanf_s("%d%d",&a,&b);
    int c = a > b ? a : b;
   /* int c;
    if (a > b)
    {
        c = a;
    }
    else
    {
        c = b;
    }*/
    printf("最大值=%d\n",c);

    return 0;
}
/*
int main()
{
    int a = 10;
   // if (0 < a < 5)//error
    if(0<a && a<5)
    {
        printf("真\n");
    }
    else
    {
        printf("假\n");
    }
    return 0;
}
*/
/*
int main()
{
    int n;
    scanf_s("%d", &n);//从键盘获取一个整数值
   // printf("%d\n",n);
    //判断这个n是否为闰年
    if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0)
    {
        printf("%d 是闰年\n",n);
    }
    else
    {
        printf("%d不是闰年\n",n);
    }

    return 0;
}
*/
/*
int main()
{
   // printf("%d\n",5/2);//%d:输出十进制的整数
    //printf("%d\n",-9/0);//error
    //printf("%d\n", -9 / 2);
    printf("%d\n",5%2);//1  5/2 = 2  ... 1
    printf("%d\n", -5 % 2);//-1  -5/2 = -2   -1
    printf("%d\n", 5 % -2);//1
    printf("%d\n", -5 % -2);//-1

    return 0;
}
*/
/*
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    if (++a && b++ && ++c)//短路现象
    {
        printf("真\n");
    }
    else
    {
        printf("假\n");
    }
    printf("%d,%d,%d\n",a,b,c);

    return 0;
}
*/
/*
int main()
{
    int i = 10;
    //int j = ++i;//前置++
    //int j = --i;//前置--
   // int j = i++;//后置++
    int j = i--;
    printf("%d,%d\n",i,j);

    return 0;
}
*/
/*
int main()
{
   // if (!10)
    //if(5>3 && 5<4)
    if(5>3 || 5<4)
    {
        printf("真\n");
    }
    else
    {
        printf("假\n");
    }
    return 0;
}
*/
/*
//真假值
int main()
{
    //if (1)//如果
    //if(2)//真
    //if(0.5)//真
   // if("你好")//真
    if(0)//假
    {
        printf("真\n");
    }
    else//否则
    {
        printf("假\n");
    }
	//printf("欢迎来图论学习\n");
	return 0;
}
*/

C语言 运算符及练习

C语言 运算符及练习

上一篇:(深度剖析数据在内存中的存储) C语言从入门到入土(进阶篇)


下一篇:网络安全——HTML基础