【试题057】C语言数据类型转换之自动类型转换例题合集

1.说明:自动类型转换:参与运算的各个数据都转换成数据较长的类型,结果也为数据类型较长的类型。

2.三原则:就高不就低,就长不就短,就左不就右

3.图示:横向必定自转,纵向需要强转

 

4.口诀:低转高自转,高转低强转


5.例题:

设int x=2,y=4;,值不是0的表达式是 ? A 1/xy B 1/(xy) C 1.0/x/y D 1/x/(double)y

  • 分析:A:1/x=0(都是int类型)→0y=04=0
  • B:(xy)=24=8→1/8=0
  • C:1.0/x=0.5(1.0默认为double类型)→0.5/4=0.125
  • D:1/x/=1/2=0→0/(double)y=强制转型0.0/4.0=0.0

6.例题:若定义了int a;char b; float c;,则表达式a*b-c的类型是?

  • 分析:根据优先级先算a*b→char类型会自动转成int类型
  • 接着char-float c→float类型会自动转成double类型

7.例题:设int i;float f;double d;char c;

则表达式i*f-d+c值的类型是?

  • 分析:根据优先级先算if=intfloat→float类型会自动转成double类型
  • double-double d+char c=double(选取变量中数据中最长的类型作为结果类型)

8.例题:设int i;float f;double d;long e;

则表达式10+'a'+f*i-d/e值的类型是?

  • 分析:根据优先级先算fi=floatint=float
  • 接着d/e=double d/long e=double
  • 然后10+'a'+float-double=int+float-double=double

9.例题:设int A=9,B=6,C;,执行语句C=A/B+0.8;后C 的值是?

  • 两种分析情况:
    • 语句不加括号
  int a = 1, b = 2;
  printf("表达式结果=%d\n", a = b + 2, a++, a + b);
  //表达式不加括号等于4,计算的是a = b + 2的值,没执行后边的
  printf("a=%d,b=%d\n", a, b);//a=4,b=2
  • -语句加括号
 int a = 1, b = 2;
printf("表达式结果=%d\n", (a = b + 2, a++, a + b));
//加括号等于将表达式看成逗号表达式,结果为末尾值=7
 printf("a=%d,b=%d\n", a, b);//a=5,b=2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值