(接上一篇)嵌入式C语言中关于运算符,ASCII码,标准C库中的IO函数,逗号运算符,三目运算符的定义和详细说明。

(接上一篇)嵌入式C语言中关于运算符,ASCII码,标准C库中的IO函数,逗号运算符,三目运算符的定义和详细说明。,第1张

(接上一篇)嵌入式C语言中关于运算符,ASCII码,标准C库中的IO函数,逗号运算符,三目运算符的定义和详细说明。

三、运算符。
四则运算: + - * /
模运算:   %
赋值运算: =  ==  !=  +=  -= *=  /=
逻辑运算: & && | ||
自增自减: ++ --

需要注意的点:
1、把一个浮点型的数据赋值给一个整型的变量,那么精度降低。
2、把整型数据赋值给一个浮点型的变量,那么就会在后面补0。
3、除法。
5/2    -> 2
5.0/2  -> 2.5
5/2.0  -> 2.5
5.0/2.0-> 2.5

4、模运算。
5%2     -> 1
5.0%2   -> 错
5%2.0   -> 错
5.0%2.0 -> 错

5、& && | ||

&    --> 位与运算
&&   --> 逻辑与运算
|    --> 位或运算 
||   --> 逻辑或运算

与: 必须两者都为真,才为真。
或: 只要有一个为真,那么就为真。

一个符号  -> 先转换为2进制数字,然后使用 与/或 逻辑去计算
二个符号  -> 非零即真

#include

int main(int argc,char *argv[])
{
    
    
    
    
    //int a;
    //a = 5%2;
    //printf("a = %dn",a);  //1
    
    //a = 5.0%2;
    //printf("a = %dn",a);
    
    //a = 5%2.0;
    //printf("a = %dn",a);
    
    //a = 5.0%2.0;
    //printf("a = %dn",a);
    
    // & && | ||
    
    
    
    //int a = 10;
    //a += 5;  // a = a + 
    //printf("a = %dn",a);
    
    //int b = 10;
    //b++;
    //printf("b = %dn",b);  //11
    
    //int c = 20;
    //++c;
    //printf("c = %dn",c);  //21
    
    //前置++  与 后置+= 区别
    //前置++  先加1 ,再运算
    //后置++  先运算 , 后加1

    int b = 10;
    printf("b = %dn",b++);  //10  先打印,再+1
    printf("b=  %dn",b);    //11
    int c = 10;
    printf("c = %dn",++c);  //11  先+1  再打印
    printf("c = %dn",c);    //11
    return 0;
}

四、ASCII码。
1、如何在Ubuntu上查看ASCII码表?
gec@ubuntu:/mnt/hgfs/GZ2180/01 C语言/02/code$ man ascii  (按'q'退出)

2、ascii码表作用是什么?
ascii - ASCII character set encoded in octal, decimal, and hexadecimal
    //将字符转换成对应的八进制、十进制、十六进制数字

3、如何查看ascii码表?
char类型的数据占用1个字节  --> 8位   --> 2^7 = 128   (取值范围:0~127)

  八进制    十进制   十六进制    字符
    Oct      Dec      Hex       Char                          
    000       0       00        NUL '' (null character)     十进制的0  等价于  字符''  (代表一个空白的字符)
    012      10       0A        LF  'n' (new line)           十进制的10 等价于  字符'n'
    060      48       30        0                             十进制的48 等价于  字符'0'
    101      65       41        A                             十进制的65 等价于  字符'A'             
    141      97       61        a                             十进制的97 等价于  字符'a'

4、printf()输出格式符号。

%d  --> 以十进制的形式来输出结果
%o  --> 以八进制的形式来输出结果
%x  --> 以十六进制的形式来输出结果
%c  --> 以字符的形式来输出结果
%f  --> 以浮点型来输出结果。  --> 默认输出小数点后6位。
%.4f--> 以浮点型来输出结果。  --> 指定输出小数点后4位。
%s  --> 输出字符串
%p  --> 输出指针

 
#include

int main(int argc,char *argv[])
{
    int a = 65;
    printf("a = %dn",a); //65       //以十进制形式来输出a变量的值
    printf("a = %on",a); //101      //以八进制形式来输出a变量的值
    printf("a = %xn",a); //41       //以十六进制形式来输出a变量的值
    printf("a = %cn",a); //A        //以字符形式来输出a变量的值
    
    int b  = 0;
    printf("b = %dn",b);  //0
    printf("b = %on",b);  //0
    printf("b = %xn",b);  //0
    printf("b = %cn",b);  //
    
    char c = 'a';
    printf("c = %dn",c);  //97
    printf("c = %on",c);  //141
    printf("c = %xn",c);  //61
    printf("c = %cn",c);  //a
    
    return 0;
}

5、ascii码表存在说明了一个问题。
其实字符类型的数据就是整型数据。

五、标准C库中的IO函数。
1、IO函数是什么?
IO函数  --> input/output函数   --> 输入/输出函数   --> scanf()/printf()

2、它们的作用是什么?
printf()   -->  输出某段内存空间上的值。
scanf()    -->  从键盘中获取一些值,并放在内存空间中。

3、scanf()函数作用。
例如:我从键盘中获取一个整型的数据,并且把这个数据存放在一个整型变量中。

1)输入单个数字。
#include

int main(int argc,char *argv[])
{
    int x = 100;  //在栈区连续申请4个字节的空间,并使用变量x间接访问这片空间。
    
    printf("x = %dn",x);  //将内存中x变量的值输出
    
    scanf("%d",&x);  //从键盘中获取一个十进制数据,然后存放在&x这个地址指向的内存空间上。
    
    printf("x = %dn",x);  //将内存中x变量的值输出
    
    return 0;
}

2)输入多个数字。
#include

int main(int argc,char *argv[])
{
    int x = 100;  //在栈区连续申请4个字节的空间,并使用变量x间接访问这片空间。
    int y,z,k;
    
    printf("x = %dn",x);  //将内存中x变量的值输出
    
    scanf("%d %d %d %d",&x,&y,&z,&k);  //从键盘中获取一个十进制数据,然后存放在&x这个地址指向的内存空间上。
    
    printf("x = %dn",x);  //将内存中x变量的值输出
    printf("y = %dn",y);
    printf("z = %dn",z);
    printf("k = %dn",k);
    
    return 0;
}

六、逗号表达式。
计算规则:从左到右依次计算,结果以最后一个表达式为准。

例如:
int a=1,b=5,c=10,d;
d = (a=a+b,c=b+c,a+c);
printf("d = %dn",d);  //21

分析:
a=a+b  --> a=1+5=6   --> 现在: a=6  b=5  c=10
c=b+c  --> c=5+10=15 --> 现在: a=6  b=5  c=15
a+c    --> 6+15=21       把21赋值d

    练习: 
    int a=1,b=2,c=3,d;
    d = (c=a+3,b-=a,b++);
    printf("d = %dn",d);  // 1  2

分析:
c=a+3   --> c=1+3=4   现在:a=1  b=2  c=4
b=b-a   --> b=2-1=1   现在:a=1  b=1  c=4

d = b++;   把b的值先赋值给d,然后b再加1

七、三目运算。
1、三目运算的形式:
表达式 ? 结果1 : 结果2

2、三目运算的规则:
先判断表达式的值是真还是假。
如果是真,则执行的结果就为结果1。
如果是假,则执行的结果就为结果2。

3、例子。
int a = 1,b = 2,c;
c = ( a > b ? a : b );    --> 求出a与b之间的最大值
printf("c = %dn",c);  //2

   练习时间:
   假设有以下的表达式,"A ? i : j" 请问以下哪个表达式与之等价?

 A. A==0 ? i : j;
 B. A!=0 ? i : j;   √
 C. A==1 ? i : j;
 D. A!=1 ? i : j;


"A ? i : j"
如果A为真,则结果为i。
如果A为假,则结果为j。


 A==0 ? i : j;
如果A为真  ---> 说明A就是一个非0   -->  非0 == 0 ?   --> 假   --> 则结果为j。
如果A为假  ---> 说明A就是一个0     -->    0 == 0 ?   --> 真   --> 则结果为i。

 A!=0 ? i : j;
 
如果A为真  ---> 说明A就是一个非0   -->  非0 != 0 ?   --> 真  --> 则结果为i。
如果A为假  ---> 说明A就是一个0     -->    0 != 0 ?   --> 假  --> 则结果为j。

 A==1 ? i : j;

如果A为真  ---> 说明A就是一个非0   -->  非0 == 1 ?  --> 不一定

 A!=1 ? i : j;

如果A为真  ---> 说明A就是一个非0   -->  非0 != 1 ?  -->  不一定

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

原文地址: http://outofmemory.cn/zaji/5692294.html

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

发表评论

登录后才能评论

评论列表(0条)

保存