已采纳回答 / onemoo
在赋值(初始化)时,如果两侧类型不一致的话,等号右侧的变量会临时转换为左侧的类型,这不会影响右侧变量本身的类型和值,转换后的值再给左侧赋值。char属于整型,那右侧的值就会从浮点型转为整型,转换过程是丢弃小数部分,所以char会获得d的整数部分的值。其实第5,6,7,8行都发生了这种自动类型转换。printf会把后面的参数按照前面的格式化指示符来解释并输出,在使用时要求一定要类型相符。但注意:类型不符的话,函数仍会去读取那个变量的值,且只会按照指示的类型来解释(而不管实际的类型,实际上函数根本就无从知晓)...
2015-09-17
已采纳回答 / qq_仰望摩天轮_0
int a=100; printf("x=%d\n",a++); //输出值为100 , a的值为101 printf("x=%d\n",++a); //输出值为102 , a的值为102 printf("x=%d\n",--a); //输出值为101 , a的值为101 printf("x=...
2015-09-17
已采纳回答 / onemoo
case后的是个冒号,而非分号。第10、11行表示在score为10和9时都打印“等级A”。switch是这样的:一旦匹配到一个case,就从那个case开始向下执行,且忽略掉后面的case标号,连后面case中的语句一起执行下去。 所以匹配到10后,就开始从case 10冒号后的语句开始执行,这里有没有语句都没有关系,接着会执行下个case后的语句,也就是case 9中的,这里的break语句会跳出整个switch(这样避免执行到后面case中的语句)。
2015-09-17
已采纳回答 / onemoo
赋值后的“字母”是什么!? 你想说的是变量吗?你可以在if中如此比较啊,而且你的这个比较为true,会执行if中的语句。不过printf你拼写错了。
2015-09-17
已采纳回答 / onemoo
区间判断在逻辑上其实是两个条件判断用逻辑与相连:即 score大于等于5000 和 score小于10000 同时成立。 所以要用逻辑与运算符(&&)将两个条件判断相连。其实 5000<=score<10000 也是一个合法的复合语句,但无法达到区间判断的效果,因为C是这样解释它的:(5000<=score)<10000。5000<=score的结果是true或false,然后这个bool值再与10000做大小判断。因为ture会转换为1,false会转换为0...
2015-09-17
已采纳回答 / onemoo
printf的第一个参数是字符串,叫做“格式化字符串”,函数的作用就是将这个字符串输出,并且当字符串中有格式化指示符(%d %f等)时,按照指示将后面的参数放到相应的位置上输出。所以你只打算输出一句话时,可以直接写在printf的第一个参数处。 但要注意:这个字符串中不能含有格式化指示,不然函数还是会到后面找参数(而你并没有传其他参数),这会引起问题。像图中那样写,格式化字符串的开头就是一个格式化指示符%s,表明后面的参数是一个字符串,printf同样会将这个字符串输出。
2015-09-16
已采纳回答 / qq_仰望摩天轮_0
int kilo(int k,int t) //把int 类型改为float类型,因为返回值rmb是float类型printf("上午一共花了%d\n",kilo(k1,t1)); //%d改为%fprintf("下午一共花了%d\n",kilo(k2,t2)); //%d改为%f附加:%.2f 是输出近似的两位小数,同理,可以用%.3f %.4f 不过是近似的,而且不要超过fl...
2015-09-16