首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指派运算符 的相关有关问题

2014-01-15 
指派运算符的相关问题#includestdio.hint main(void){int cc 1.6 + 1.7printf(first is %f\n,(flo

指派运算符 的相关问题
#include<stdio.h>
int main(void)
{
    int c;
    c = 1.6 + 1.7;
    printf("first is %f\n",(float)c);
    c = 1.6 +1.7;
    printf("end is %d\n",(int)c);
    return 0;
}

      结果
               first is 3.000000
               end is 3

             第一个结果中,   我指定了 C 的类型为 float。  原来的  int 与此冲突?
                                                             否则怎么出现个 3.000000?
                                                求解~~
 (书上没有介绍此用法)
              原来的用法是这样。  【【【【【【【【【【【【【【
#include<stdio.h>
int main(void)
{
    int c;
    c = 1.6 + 1.7;
    printf("first is %d\n",c);
    c =(int) 1.6 +(int)1.7;
    printf("end is %d\n",c);
    return 0;
}
         将 1.6 和1.7 指派为 int 类型。  从而截尾,即   c = 1 + 1;

[解决办法]
     c = 1.6 + 1.7; // 
上面一行右边先运算,得到3.3(大致)的浮点数结果,在赋值给左边的整型变量是,后面的小数被切掉,c得到了3。只知道3,你原来是从3.0001还是3.99999还是3LL赋值给它的都成了无关紧要的历史。c管不了,编译器也不会帮你记住...
    printf("first is %f\n",(float)c);
上面你从整型cast成浮点数,它里面的值(3)被赋给新生的无名变量,并被压入堆栈,printf函数在运行中会根据前面格式船中的%f找它并正确的使用,打印出3.0。 前面的3.3, 正如我们讨论过的一样,永远成为没有现实影响的历史。
    c = 1.6 +1.7;
    printf("end is %d\n",(int)c);
从int cast到int,没有必要但也不算错,得到3的打印结果,名实相符,皆大欢喜。如果不这样这满版的人就要哭了。

热点排行