• c 语言学习第三天


    字符和字符串

    字符

    当我们定义了一个字符变量 c 为a时,打印的时候让它使整数形式显示。会出现怎么一个情况?

    #include<stdio.h>
    
    int main(){
      char c = 'a';
      printf("c show number is %d 
    ",c);
      return 0;
    }
    
    c show number is 97
    

    当定义变量使用char类型时,把它赋值给数字,会出现什么情况?

    #include<stdio.h>
    
    int main(){
      char a = 97,b = 98,c = 99;
      printf("%c,%c,%c 
    ",a,b,c);
      return 0;
    }
    
    a,b,c
    

    声明字符会参照ASIIC 码进行转换。当以字符形式显示,就会显示表中对于的字符显示。当以整数形式显示,就会参照表中定义的数字形式显示。

    • 当然 char 类型也有取值范围,当超过取值范围,就会出现异常显示。
    #include<stdio.h>
    int main(){
      char a =180 ,b = 190,c = 300;
      printf("a:%d 
    ",a);
      printf("b:%d 
    ",b);
      printf("c:%d 
    ",c);
      return 0;
    }
    
    test3.c: In function ‘main’:
    test3.c:4:2: warning: overflow in implicit constant conversion [-Woverflow]
      char a =180 ,b = 190,c = 300;
      ^
    a:-76
    b:-66
    c:44
    

    在定义char类型的时候,根据编辑器默认加上signedunsigned,由于编辑器的不同。所以 char 的取值范围不同,signed char取值范围为-128~127,而unsigned char取值范围为0~255

    字符串

    在 c 语言中,字符串就是一串字符,所以没必要新定义一个字符串类型。只需要在内存中找一块连续的空间来存储字符串即可。

    • 声明字符串
    # char 标识符[长度|可不写];
    char c[6];
    
    # char 标识符[长度|可不写]= {*,*,*,*};
    
    char c[6]= {'h','e','l','l','o',''};
    
    • 字符串赋值
    c[0] = 'h';
    c[1] = 'e';
    c[2] = 'l';
    c[3] = 'l';
    c[4] = 'o';
    c[5] = '';
    
    #include<stdio.h>
    int main(){
      char c[]= {'h','e','l','l','o',''};
      printf("c is %s
    ",c);
      printf("world");
      return 0;
    }
    
    hello
    world
    

    运算符

    算数运算符

    双目:+,-,*,/,%.

    单目:+,-.

    什么是目?目取决于操作数,符号需要连接两个操作数的叫双目运算符。连接一个操作数叫单目运算符。

    • /

    整数/整数 = 整数(小数点会被舍弃)

    浮点数/浮点数 = 浮点数

    • % 求余

    当浮点数求余时会发生报错。

    #include<stdio.h>
    
    int main(){
      double a = 5.2 % 3.0;
      printf("a is %f
    ",a);
      return 0;
    }
    
    test5.c: In function ‘main’:
    test5.c:4:17: error: invalid operands to binary % (have ‘double’ and ‘double’)
      double a = 5.2 % 3.0;
                     ^
    

    表达式

    用于运算符和括号将操作数连接起来的式子。

    运算符优先级

    int main(){
      int i ,j ,k;
      i = 1 + 2;
      j = 1 + 2 * 3;
      k = j + j + -1 + pow(2,3);
      printf("i is %d
    ",i);
      printf("j is %d
    ",j);
      printf("k is %d
    ",k);
      return 0;
    }
    
    i is 3
    j is 7
    k is 21
    

    类型转换

    为了确保计算的精度,默认以操作数类型占用内存较大的为基础,其余不同类型会转换成占用内存较大的数据类型,然后进行运算,结果也为占用内存较大的数据类型。

    • 例如:
    1 + 1.5 = 1.0 + 1.5 = 2.5
    
    #include<stdio.h>
    int main(){
      printf("整型输出:%d
    ", 1 + 2.0);
      printf("浮点型输出:%f
    ",1 + 2.0);
      return 0;
    }
    
    整型输出:-1131816200
    浮点型输出:3.000000
    

    强制类型转换

    在操作数前+(类型)即可。

    #include<stdio.h>
    int main(){
      printf("整型输出:%d
    ", 1 + (int)2.0);
      printf("浮点型输出:%f
    ",1 + 2.0);
      return 0;
    }
    
    整型输出:3
    浮点型输出:3.000000
    

    浮点类型转换 int 类型,会直接把小数点后面的数直接省略。而不是四舍五入。

    关系运算符

    用关系运算符将两边的变量、数据或表达式连接起来,称之为关系表达式。(有返回值)

    int a = 1,b = 0;
    1 < 2 // int 1
    a < b // int 0
    a <= b // int 0
    'a' + 'b' <= 'c' // int 0
    (a=5) < (b = 10) // int 1
    

    逻辑运算符

    • !:逻辑非,取反,单目运算符
    • &&:逻辑与,全为真才为真
    • ||:逻辑或,有一个为真就为真
    #include<stdio.h>
    
    int main(){
      int a = 5,b=3;
      printf("%d 
    ",!a);
      printf("%d 
    ",a>b);
      printf("%d 
    ",!(a+b));
      printf("%d 
    ",!0 + 1 < 1 || !(3+4));
      return 0;
    }
    
    0
    1
    0
    0
    
    • 短路

    &&前面的值为假 或者 当||前面的值为真 会忽略后面的表达式。

  • 相关阅读:
    UVA 10003:Cutting Sticks 区间DP
    UVAlive 10154:Dire Wolf 区间DP
    HDU 5071:Chat(2014 Asia AnShan Regional Contest)
    HDU 5074:Hatsune Miku(2014 Asia AnShan Regional Contest)
    android 代码混淆及问题大集锦
    android调试bug集锦 onActivityResult立即返回,并且被CANCEL
    开启g++ 编辑器 c++11特性
    解析最简单的验证码
    将图片文件转换为.py文件
    使用pyinstaller 2.1将python打包并添加版本信息和图标
  • 原文地址:https://www.cnblogs.com/kongyijilafumi/p/14945272.html
Copyright © 2020-2023  润新知