c/c++语言开发共享C语言学习(2)

C语言代码编写规范 第一个:注意缩进 用tab键缩进对齐 第二个:适当的空行 第三个:注释,简明扼要 C语言注释只有两种写法: 第一种:单行注释 //注释文字 第二种:块注释 /* 注释的内容 */,块注释不能嵌套 尤其是重要的核心代码必须写注释 第四个:命名,通俗易懂,英文,千万不要用拼音 C语言 …


c语言代码编写规范

  第一个:注意缩进

                 用tab键缩进对齐

  第二个:适当的空行

  第三个:注释,简明扼要

                c语言注释只有两种写法:

                          第一种:单行注释    //注释文字

                          第二种:块注释  /*  注释的内容  */,块注释不能嵌套

               尤其是重要的核心代码必须写注释

  第四个:命名,通俗易懂,英文,千万不要用拼音

 

c语言中的运算符

    算术运算符   +   –   *    /    % (取余) 

    关系运算符    >    <    ==   !=   >=    <=

     逻辑运算符    ||逻辑或     &&逻辑与    !逻辑非

    指针运算   *    &

    三目运算符    ?:

    求数据类型大小,变量大小    sizeof

    位运算           &   |    ~   ^

    组合运算       +=   -=   *=   =      &=   |=  

    移位运算        >>   <<

    自增自减       ++    —

(1) 除法

        情况一:

           两个整数相除,结果取整,而且不会四舍五入

        情况二:

           除法运算中有一个是小数

           1/2  –》结果不是0.5  是0

           16/3 –》5

            2/3 –》

#include <stdio.h>  int main() {     //int a=1/3;     int a=2/3;     float b=2/3;     float c=2.0/3;  //  2/3.0    2.0/3.0     int d=2.0/3;     printf("%dn",a);     printf("%fn",b);     printf("%fn",c);     printf("%dn",d); }

 

结果如下:

0 0.000000 0.666667 0

 

(2)取余,计算余数

          只能用于整数运算     15%2  余数1

                                            15.0%2  不对的,小数不能参与取余运算

实际开发作用:

         除法和取余配合实现获取一个数的各个位

         任意输入一个整数,编程得到这个整数总共多少位,各个位分别是多少

                      7545

(3)逻辑运算,跟条件判断配合在一起使用

          if(a>b)

          数学中:   10<x<100

          c语言中: if(x>10 && x<100)

                            if(姓名==zhang || 姓名==王)  //或者

                            if(姓名==zhang && 富二代)  //并且

          重点:区分==和= 

                    ==用来判断变量是否相同   if(a==b)

                    = 赋值运算符号

  c语言规定的真和假

                    非零就是真  1   18   -9

                    零就是假

                    表达式一 || 表达式二 ||  表达式三   //从左到右,有一个条件为真,后面的都不用运算了,整个表达式都为真

                    表达式一 && 表达式二 &&  表达式三  //从左到右,有一个条件为假,后面的都不用运算了,整个表达式都为假

                    if(有房&&有车&&帅)

                    逻辑非     真–》假

                                    假–》真

#include<stdio.h>  int main() {     int a=78;     int b=8;     if(!(a<b))         printf("a>bn"); }

 

结果如下:

a>b

 

(4) 三目运算符

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

    判断表达式1是否为真

      为真 –》执行表达式2

      为假 –》执行表达式3

#include <stdio.h>  int main() {     int a,b;     printf("请输入两个整数!n");     //scanf("%d",&a); //获取键盘输入整数保存到变量a的地址中     //scanf("%d",&b);     scanf("%d%d",&a,&b);          //用三目运算符比较他们的大小     int ret=(a>b)?a:b;          printf("%d和%d中较大的一个数是:%dn",a,b,ret); }

 

结果如下:

请输入两个整数! 15 20 15和20中较大的一个数是:20

 

(5)位运算(重点)

  对整数的二进制进行运算

    按位与 &     只要有一个是0结果就是0,全部都是1,结果就是1

    比如:  18&16结果是多少?    int  a=89; int b=96;   a&=b;  //等价于 a=a&b;

          18 –》二进制  10010

          16 –》二进制  10000

                                                            10000

      特点:  任意一个整数要求把它的第三位二进制置0,其它位不允许改变

        125–》二进制1111101 –》最终希望的结果1111001

            1111101  –》125

            1111011  &

            1111001

                                           任何二进制位跟1进行按位与运算结果保持不变

                                           任何二进制位跟0进行按位与运算结果一定是0

    按位或 |      只要有一个是1,结果就是1,全部都是0,结果就是0

    比如:  18|16结果是多少?

          18 –》二进制  10010

          16 –》二进制  10000

                  10010

      特点:实际开发中,用位或运算去设置某一位二进制为1

            int a=785;

                                       785

                                             00000…..100  或

            任何二进制位跟0进行按位或运算结果保持不变

            任何二进制位跟1进行按位或运算结果一定是1

    按位异或 ^   相同为0,相异为1

    比如:  18^16结果是多少?

          18 –》二进制  10010

          16 –》二进制  10000

                   00010

      特点:实际开发中我想把某个数的二进制取反

        比如:  int  a=785  第三位二进制取反

                                                    785

                                    0000……..100      异或 

          一个数跟自己异或,结果为0       a^a结果为0

          异或满足交换律                           a^b^a等价于  a^a^b

          一个数跟0异或,结果保持不变    a^0结果为a

                                                                   

    按位取反 ~   0变成1    1变成0

    比如: ~18结果是多少?

        18 –》二进制  10010

         ~18 –》          01101

  (6)组合运算(复合运算)

    +=      a+=10; //等价于   a=a+10;

  (7)移位

    左移  <<  把一个整数的二进制整体向左移动若干位,低位补0

        18<<2;  //18左移2位

        0000000000………10010<<2

        特点:一个数左移n位,相当于乘以2的n次方

    右移  >>   把一个整数的二进制整体向右移动若干位,高位补什么??

        算术右移:  高位补符号位

        逻辑右移:  高位补0 

        特点:一个数右移n位,相当于除以2的n次方

  (8)自增和自减

      a++   后置++    先使用a原本的值,然后再把a加1赋值给自己

      ++a   前置++    先把a加1,然后再使用加一之后的a 

      a–     后置–    先使用a原本的值,然后再把a减1赋值给自己

      –a     前置–    先把a减1,然后再使用减一之后的a

 

#include <stdio.h>  int main() {     int a=78;     //int b=a++; //后置++     int b=++a; //前置++     int c=a++;     printf("b is:%d  a  :%d   c:%dn",b,a,c); }

 

结果如下:

b is:79  a  :80   c:79

 

 

练习:

         1.      float  a=1.6;

                  if(a==1.6)   //请问这个条件是否成立,为什么

#include <stdio.h>  int main() {     float a=1.6;  //不能精准表示,整数部分和小数部分     float b=1.5;  //可以精准表示     if(b==1.5)         printf("b==1.5n");     else         printf("b!==1.5n");               if(a==1.6)  //某些小数在计算机中是无法精准表示的     //左边的a是个变量,它里面存放的是1.6的二进制的近似值     //右边的1.6是个常量,精度高一些         printf("a==1.6n");     else         printf("a!==1.6  a is:%fn",a); }

 

结果如下:

b==1.5 a!==1.6  a is:1.600000

 

 

         2.      int  a=10;

                  int  b=6;

                  if((a<2)||(b=18))

                        printf(“a ,s:%d    b  is:%dn”,a,b);

                if((a<12)&&(a>b)&&(a=96))

                        printf(“a ,s:%d    b  is:%dn”,a,b);

#include <stdio.h>  int main() {     int  a=10;     int  b=6;     if((a<2)||(b=18)) //判断a<2或者18赋值给b         printf("a is:%d    b  is:%dn",a,b);                  if((a<12)&&(a>b)&&(a=96))         printf("a ,s:%d    b  is:%dn",a,b); }

 

结果如下:

a is:10    b  is:18

 

        3.     用三目运算符实现三个整数求最大值

#include <stdio.h>  int main() {     int a,b,c;     printf("请输入三个整数!n");     scanf("%d%d%d",&a,&b,&c); //scanf("%f",&m);     //分步骤写     int firstmax=(a>b)?a:b;     int max=(firstmax>c)?firstmax:c;     //合并写     //int result=((a>b)?a:b)>c?((a>b)?a:b):c;          printf("最大值result is:%dn",max); }

 

结果如下:

请输入三个整数! 5  9  4  最大值result is:9

 

 

总结按位或,按位异或的特点

   完成任意一个整数m,要求把它的第三位二进制置零,置一,取反,其它二进制位不允许改变

将这个数&0xfffb,将第三位置0;

将这个数|0x0004,将第三位置1;

将这个数^0x0004,将第三位取反;

 C语言学习(2)

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/600299.html

(0)
上一篇 2021年5月9日
下一篇 2021年5月9日

精彩推荐