C语言 03.运算符

C语言 03.运算符,第1张

一些关键字:

extern:表示声明。


没有内存空间。


不能提升。



const:限定一个变量为只读变量。



volatile: 防止编译器优化代码。


volatile int flg = 0;
register: 一般在编写底层的时候,应用开发使用很少。


定义一个寄存器变量。


没有内存地址。


register int a = 10; // 把数直接存到寄存器里面

字符串:

C语言中,用双引号引着的一串字符,称之为字符串。


一定有一个结束标记’char ch = ‘A’;'
‘a’一个字节
"abc" --> 'a''b''c''\0'
“a”('a''int')不等价 ,左边是字符,右边是字符串

输入输出函数 1.scanf函数:

从键盘接收用户输入。



(1) 接收 整数 %d

        , a; bscanf c(  创建变量空间, 等待接收用户输入。


"%d %d %d",&, &a, &b) ;cchar,

(2) 接收 字符 %c

        , a; bscanf c(
        "%c %c %c",&, &a, &b) ;cchar[

(3) 接收 字符串 %s

        10 str];scanf(    // 定义一个数组,用来接收用户输入的 字符串。


中括号内必须填写数字,才能告诉字符串如何开辟大小 "%s",); strchar= // 变量名要取地址传递给 scanf, 数组名本身表示地址,不用 & 符。


【注意】
1) scanf 具有安全隐患。


如果存储空间不足,数据能存储到内存中,但不被保护。


【空间不足不要使用】
2) scanf 函数接收字符串时, 碰到 空格 和 换行 会自动终止。


不能使用 scanf 的 %s 接收带有空格的字符串。



例:当输入"hello world"时,会输出"hello"
将 #define _CRT_SECURE_NO_WARNINGS 添加到程序 第一行。


解决scanf 4996错误

2.printf函数:
    'a' ch ; //字符char                          [
    ] str="hello world" ; // 数组,一个11位printf             (
    "ch = %c\n",); ch// c是字符printf                (
    "str = %s\n",); str// s是字符串char              [
    2 str2]='h' , { 'e'}; // 这个后面没有‘printf’,打印完he之后就会一直打印直至出现(截至,就会出现乱码     "str2 = %s\n"             ,
    );// he烫烫烫烫烫烫烫烫烫烫烫烫烫i谍\pchar str2[3            ]
    = str1'h','e' , { '}';// 这里有'printf',打印到'('截止,所以输出是he"str1 = %s\n", );        // he
    %s%d str1打印整数%c            打印字符
‘abc’‘a’“abc”putchar('\n')printf("\n");int=
%x打印16进制数
%u打印字符串, 挨着从字符串的第一个字符开始打印,打印到’\0’结束。


打印无符号%m.n:
%0m.nf:%%
%Ns%0Ns
%-Ns
打印实型时用到,一共有 m 位(整数、小数、小数点),n位小数。


其中 f:表示打印实型,一共有 m 位(整数、小数、小数点),n位小数。


0:表示不足 m 位时,用0凑够m位。


显示一个%。


转义字符’’ 对 % 转义无效。


显示N个字符的字符串。


不足N用空格向左填充。


显示N个字符的字符串。


不足N用0向左填充。


显示N个字符的字符串。


不足N用空格向右填充。


3.putchar函数:

输出一个 字符 到屏幕。



直接使用 ASCII 码。



不能输出字符串。



10既不是一个有效字符,也不是一个有效字符串。


有效字符;,有效字符串++
常用;;来打印换行。



// a = a+1;也可以打印换行

4.getchar()函数:

从键盘获取用户输入的 一个字符。



返回该获取的字符的 ASCII 码。


算数运算符:

先 * / % 后 + -
除法运算后,得到的结果赋值给整型变量时,取整数部分。



除0 :错误 *** 作。


不允许。



对0取余:错误 *** 作。


不允许。



不允许对小数取余。


余数不能是 小数。


35 % 3.4;
对负数取余,结果为余数的绝对值。


10 % -3; --》 1

++ 和 --:后缀优先级高于前缀

前缀自增、自减:先自增/自减, 在取值。


        int a = 10;
        ++a;        // a = a+1;

后缀自增、自减: 先取值, 再自增/自减。


        // a = 10,b=20 a  printf ("a = %d"
        a,++        )
	;
	   // 先取值给%d,再自增  10printf("a = %d" a,);   //11
	   printf("b = %d", a++)     ;
	   // 先自增,再取值给%d  21printf("b = %d" ,b);   // 21
	   int=5; b+=10     ;
赋值运算:
    // a = a+10; a -= 30;
    a // a = a-30; %=5  ;
    a // a = a % 5; 13<  <
    a 16 ;==      13
比较运算符:
== 判等。


!= 不等于. < 小于 <= 小于等于 > 大于 >= 大于等于

    && < var 16 ; (计算机中不允许)int => var > 10 ; var int =0
逻辑运算符:

0为假,非0为真。


(1)
逻辑非:! 非真为假, 非假为真。


; a printf ("!a = %d"
, b ! );
//  0printf("!b = %d" ,a!)      ;
//  1int=10 ;bint=      0

逻辑与: &&(并且)   同真为真,其余为假。



逻辑或:|| (或)     有真为真。


同假为假。


    ; a printf ("%d"
    , b && );
     // 不同时为真,所以结果是假printf("%d" a , b||)         ;
    // 有一个为真,结果为真int=10 a , b=20         ,
三目运算符: ? :

表达式1 ? 表达式2 : 表达式3
表达式1 是一个判别表达式。


如果为真。


整个三目运算,取值表达式2。


如果为假。


整个三目运算,取值表达式3。



默认结合性。


自右向左。


逗号运算符
    = a30;int b=(= c1,=
    2 x , =a 5 ); b // “,”运算过程是从左到右,x的值不断被覆盖,“,”运算优先级别最低 printf( c "x = %d\n" ,); //5
    printf("a = %d\n", x);         //1
    printf("b = %d\n", a);         //2
    printf("c = %d\n", b);         //5
    int=3; cfloat=         3.14
运算符优先级:

[]() > ++ -- (后缀高于前缀) (强转) sizeof > 算数运算(先乘除取余,后加减)> 比较运算 > 逻辑运算 > 三目运算(条件运算)> 赋值运算 > 逗号运算




类型转换: 隐式类型转换: 由编译器自动完成。


由赋值产生的类型转换。


小–》大 没问题。


大 --》 小 有可能发生数据丢失。



   * r * ;// 得到的结构是double(编译器自动完成),但是最后赋值给了float,完成了一种赋值类型转换
    int s = 321 ; r char r=         ;
    ```
```c
 printf a ( "ch=%d\n",
 ) ch ; a// char=65
          256   128     64       32       16         8         4           2       1
     321:  1    0       1        0        0         0         0           0       1               9位
   char ch  =   0       1        0        0         0         0           0       1               8位
float=3.6 ch;int    =
4
强制类型转换:

语法: (目标类型)带转换变量 或 (目标类型)带转换表达式

    ; price double =*
    ; weight double =(
    int sum ) price * weight;
    printf sum2 ( "价格:%f\n",)price ; weight// 14.400000
    printf("sum1:%d\n", sum(int        )
     );// 这里的Int一定要带括号,不然会报错   sum1:14printf ("价格:%f\n",sum);  // 价格:12.000000,这里只是转price,因为()的优先级高于*
     sum2        

大多数用于函数调用期间,实参给形参传值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存