码迷,mamicode.com
首页 > 其他好文 > 详细

C-1 简单数据类型转换, scanf缓冲区, 逗号表达式

时间:2016-04-02 16:04:06      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

 

关于类型转换:

1.int

如果是超出了int的范围,会溢出

如果超出了太多,报错

如果是一个小数,只会截取整数部分, 不会四舍五入

2.float

如果是一个double类型的小数,double→float

如果是一个int类型的整数,int→float

3.double

如果是一个float,float→double

如果是一个int,int→double

4.char

自动转换的顺序是: char → int → float → double 

 

scanf缓冲区问题

在接收输入的时候,scanf会把所有输入存在缓冲区,依次接收,而不会按照语句中的各个类型进行接收,尤其是数字型数据和字符行数据混合输入的时候,很容易把空格和回车存到字符变量中。

解决办法:

1.定义一个专门的字符串数组或者变量来接收多余的空格和回车

2.利用rewind(stdin);清空缓冲区

 

面试题1

两数交换不定义temp变量的方法
1.
1 num1 = num1 + num2;
2 num2 = num1 - num2;
3 num1 = num1 - num2;

 

2.
1 num1 = num1 ^ num2;
2 num2 = num1 ^ num2;
3 num1 = num1 ^ num2;

 

逗号表达式

逗号表达式的目的,并不是想要前面表达式的结果
如:
     int i = 0, j = 1, k = 2;
 
或者只是想要逗号前面的表达式执行, 然后要最后一个表达式的结果
这时候和分开写没有什么区别, 只是单纯的减少了代码行数;
 
前面的表达式只要求其执行,并不关心其结果
关心的只是前面的变化完以后,最后一个表达式的结果
 

复合赋值运算符:

int num += 10 → int num = num + 10;  减法, 乘法, 除法同理;
 

自增自减运算

++,   - -,
  1. 无论是放在左还是右, 其最后都会+1, 或者-1;
  2. 在左: 先将自身的值取出来, 作为整个表达式的结果, 然后再自增(减)
  3. 在右: 先将自增(减), 然后再将自身的值取出来作为表达式的结果

C-1 简单数据类型转换, scanf缓冲区, 逗号表达式

标签:

原文地址:http://www.cnblogs.com/SquirrelStock/p/5343402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!