论坛

关于小数到整数的转换,一个奇葩的问题

  • 举人960分

    如图片所示,512.0 * 64 = 32768.0,有谁能解释一下,最后怎么会得到32767的?我认为从常理说,应该是-1才对呀。

    是我太年轻,还是TI的编译器确实比较特殊,随着代码越来越复杂,碰到的坑越来越多,比如,CLA中对0开方居然是无穷大,吓得我赶紧去翻高中教材,以为我自己记错了。又比如,1<<16 = 1,根据本论坛的朋友介绍,似乎这个规则也是TI编译器的特色。今天又碰到这个,感觉TI都不是按常规出牌的啊~

  • 秀才140分

    是你太年轻,这其实是TI编译器遵循的同一个规则,用其它编译器也要考虑这个问题,只不过其它编译器不是很严格,所以发现不了本来要考虑的问题。

  • 状元31646分

    无符号数计算的结果应该是无符号数     为什么成了-1?

    TI的寄存器是比较特殊一些

    TI的忠诚粉丝!

  • 举人960分

    二楼的前辈,那请教一下这都是什么规则?

  • 举人960分

    三楼的前辈,我截图的代码中似乎没有指定无符号数吧?等于号右边肯定默认一个是float,一个应该是int,等号左边指定的也是int,都是有符号的。

    或许溢出的结果不是-1,我也有点糊涂,但是,对于一个有符号的数,如果赋值溢出1,不是变成负数吗?