跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在 Code::Blocks 中 c 语言的程序运行结果有误,如何处理?
未分類
21 4 月 2020

在 Code::Blocks 中 c 语言的程序运行结果有误,如何处理?

在 Code::Blocks 中 c 语言的程序运行结果有误,如何处理?

資深大佬 : l9mhd 52

问题

代码 1

#include<stdio.h> int main(){  double a,b;   a = 0.15;  b = (int)( a*10+0.5 );  printf("%.1f",b);  return 0; } 

输出 1.0

代码 2

#include<stdio.h> int main(){  double a,b;   a = 0.15;  b = a*10+0.5;     b = (int)b;  printf("%.1f",b);  return 0; } 

输出 2.0

之后用线上编译器( https://rextester.com/l/c_online_compiler_gcc ) 测试,两段代码结果一致,都是 2.0 。

尝试解决

从官网中重新下载安装,但是问题没有解决,运行结果仍然不一致。

  • 这种情况是什么原因导致的?
  • 我可以做些什么?

谢谢!

大佬有話說 (9)

  • 資深大佬 : des

    可以把有问题的程序反汇编了看看

  • 資深大佬 : kokutou

    你可以
    1 以后都用代码 2 的写法。
    2 以后都不要强制转类型。

  • 主 資深大佬 : l9mhd

    @des 您好!我把代码 1 反编译出来的 txt 复制到附言上了。
    小红点在开头和结尾,然后编译的,不过我不明白这些是什么意思,能麻烦您看一看吗?

  • 主 資深大佬 : l9mhd

    @kokutou 我目前正在学习编程,我不太确定这是不是软件的问题,有点担心在代码中出现了这样的情况以后会难以辨别出来。
    关于强制转类型,这段代码,a 赋值输入的内容,b 再除以 10,用于保留小数后一位(四舍五入),在这里强制转类型是用于省略去小数部分的值,我不知道有没有别的实现方式。

  • 資深大佬 : Cielsky

    codeblock 编译器的问题吧,估计是遗留 bug
    调试看了下
    (int)(a~)为 2
    在向 double 类型转换的时候结果错了
    其他编译器试了下没遇到这个问题

  • 資深大佬 : kokutou

    @l9mhd #4

    https://visualstudio.microsoft.com/vs/community/

    如果要学。。建议用 vs
    如果你能搞定科学上网,那建议 msys2+vscode

  • 主 資深大佬 : l9mhd

    @Cielsky 好的,多谢!

  • 主 資深大佬 : l9mhd

    @kokutou 我下载了,但是我在语言列表里没找到 c (我现在只学了 c ),感觉还要一段时间学习怎么用

  • 資深大佬 : mxalbert1996

    @l9mhd 你至少应该知道 C++完全兼容 C 吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具