06-C语言运算符2

 目录:

一、类型转换

二、条件运算符

三、逗号运算符

四、运算符优先级

回到顶部

一、类型转换

1.类型升级,浮点型高于整型,长整型高于整型,有符号与无符号取有符号。

2.在C语言中,类型转换没有提示。

高 long double

     double

     float     

     long long

     long

低 int

低精度的值付给高精度的值是没问题的

高精度的值付给低精度可能有问题

3.其他转换,浮点型和整型转换,转换浮点型(double)在运算。short/char的运算转成int后运算。

4.如果程序进行类型转换,可以使用强制类型转换,

格式:目标类型 变量=(目标类型)原类型变量

不管表达式的类型比强制的类型高还是低,都是可以的。

注意:类型转换的时候,实际是建立一个新的变量(开辟新的存储空间),原有的变量不变。

#include <stdio.h>

int main()
{
    int i = 10;
    float f = i;
    printf("f:%f\n",f);
    int i2 = 200;
    //强制类型转换
    char c = (char)i2;//高精度->低精度
    printf("c:%d\n",c);
    printf("i+f:%lf\n",i+f);//lf是double类型占位符
    int i3 = 20;
    float f2 = i3;
    f2 += 1;
    printf("i3:%d\n",i3);
    printf("f2:%f\n",f2);
    return 0;
}

回到顶部

二、条件运算符

1.又叫多目运算符,三目运算符

2.语法格式:条件表达式?表达式1 :表达式2

若条件表达式为真,则条件表达式的值位表达式1的值,否则为表达式2的值。

若表达式1和表达式2为不同的类型时,整个条件表达式的类型为二者中精度较高的类型。

练习:在键盘上输入一个字母,将小写转换为大写,如果是大写就原样输出。

#include <stdio.h>
//在键盘上输入一个字母,将小写转换为大写,如果是大写就原样输出。
int main()
{
    printf("请输入一个字母:\n");
    char c;
    char c1;
    scanf("%c",&c);
    c1 = (c >= 'a' && c <= 'z') ? c-('a'-'A') : c;
    printf("%c转换为大写:%c\n",c,c1);
    return 0;
}

char c = '\101';这里是八进制的数。

回到顶部

三、逗号运算符

1.i=(表达式1,表达式2,表达式n);i = (j+1,k+1,l+1);

2.整个表达式以此计算各表达式的值,值以表达式n的值作为整个表达式的值,类型以表达式n的类型为整个表达式的类型。注:前面的表达式不会运算,是没有意义的。

3.并不是所有出现逗号的地方都组成逗号表达式,如果在声明变量、函数参数中逗号的作用就是分隔符。int i = 10,j = 20,k = 30,l = 40;

#include <stdio.h>

int main()
{
    int i = 10,j = 20,k = 30,l = 40;
    i = (j+1,k+1,l+1);//取最后l+1的值,前边的表达式并不计算
    //i = j+1,k+1,l+1;//k和l的值不改变
    printf("i:%d\n",i);
    printf("k:%d\n",k);//j和k的值并没有改变
    printf("l:%d\n",l);
    return 0;
}

回到顶部

四、运算符优先级

1.单目运算符(++、--)较高,赋值运算符低,算术运算符较高,关系运算符和逻辑运算符较低,从高到底参考关系:如

高  初等运算符:(),[ ]

|        单目运算符:!、++、--、-、类型转换、&、*、sezeof()

|        算术运算符:* / + -

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

|        逻辑运算符:! 高于 && 高于 ||

|        条件运算符:?:

|        赋值运算符:=  +=  -=

低          逗号运算符: ,

 注:如果无法确定优先级,可使用()。

2.运算顺序(结合性),多数运算符具有左结合性,单目/三目/赋值运算符具有右结合性。

左结合性:a+b+c  =>  (a+b)+c

右结合性:a=b=c  =>  a=(b=c)

注:表达式的类型是参与该表达式的各种操作数中类型最高的。

posted @ 2013-12-05 22:59  回读(IOS)  阅读(308)  评论(0)    收藏  举报