网站大量收购独家精品文档,联系QQ:2885784924

第7章基本类型讲义.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
混用getchar和scanf要小心 例如,计算标准体重程序,性别“回车” printf(Enter an integer: ); scanf(%d, i); printf(Enter a command: ); command = getchar(); scanf爱剩饭 输入串不匹配格式串,退回缓冲区 getchar不挑食 读入缓冲区任意字符 * 程序:确定用户输入消息的长度 Enter a message: Brevity is the soul of wit. Your message was 27 character(s) long. 长度包括空格和标点符号,不含结尾换行符。 可采用scanf或getchar函数读取字符,大多数C程序员愿意采用getchar函数。 * #include stdio.h ? int main(void) { char ch; int len = 0; ? printf(Enter a message: ); ch = getchar(); while (ch != \n) { len++; ch = getchar(); } printf(Your message was %d character(s) long.\n, len); ? return 0; } * while (getchar() != \n) len++; 类型转换 计算机执行算术运算,通常要求操作数具有相同的位数和存储方式。 不同类型操作数进行计算,C编译器要先类型转换,方便硬件实现。 a(16位int)+b(32位long int),a先转化成32位long int int与float运算,将int转换为float。 * 类型转换类型 隐式转换:编译器自动处理的转换,无需程序员介入。 显示转换:程序员使用强制运算符。 * 隐式类型转换 基本数据类型种类多,规则略微复杂 算术转换:算术或逻辑表达式中操作数的类型不同时 赋值转换:赋值运算符右侧表达式和左侧变量的类型不匹配时。 函数调用转换:函数调用中使用的参数类型与对应参数类型不匹配时。 函数返回转换:return语句中表达式的类型和函数返回值的类型不匹配时。 * 常用算术转换 多用于二元运算,eg. float x;int i; x + i; i——》float比x——》int更安全。 int——》float,几乎没什么损失。 float——》int,损失小数部分;更糟糕的是,如果(x超出int表示范围),将得到没有意义的结果。 * 常用算术转换策略 统一操作数类型:类型提升——将相对较狭小类型的操作数转换成另一个操作数的类型。 整型提升:short int——》int。 * 类型提升规则(跟大碗) * 高 float double long double unsigned long long unsigned 低 int char、short 最好尽量避免使用无符号整数, 特别是不要把它和有符号整数混合使用。 常用算术转换示例 char c; short int s; int i; unsigned int u; long int l; unsigned long int ul; float f; double d; long double ld; ? i = i + c; /* c——》int */ i = i + s; /* s——》int */ u = u + i; /* i——》unsigned int */ l = l + u; /* u——》long int */ ul = ul + l; /* l——》unsigned long int */ f = f + ul; /* ul——》float */ d = d + f; /* f——》double */ ld = ld + d; /* d——》long double */ * 赋值类型转换(削足适履) v=expr:expr——》左值v的类型 char c; int i; float f; double d; ? i = c; /* c——》int */ f = i; /* i——》float */ d = f; /* f——》double */ * 怎么削足 浮点数赋值给整型变量,削小数部分。 int i; ? i

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档