c语言打印double类型?windowsx86long

c语言打印double类型?

相信很多人学C语言时, 对long double的印象就是, 它能存储精度比double更高的浮点数.
但事实上并不完全是这样.
C98的标准是: double类型的值是long double的子集

C++ 98 standard:
and the type long double provides at least as much precision as double. The set of values of the type float is a subset of the set of values of the type double; the set of values of the type double is a subset of the set of values of the type long double.
也就是說,long double只是定義為至少跟double一樣精度(即是可以一樣)

在wiki上的long double上找到:

On the x86 architecture, most C compilers implement long double
as the 80-bit extended precision type supported by x86 hardware (sometimes stored as 12 or 16 bytes to maintain data structure alignment), as specified in the C99 / C11 standards (IEC 60559 floating-point arithmetic (Annex F)).

为什么Linux没有32位与64位之分?

是有32位和64位之分的。各大发行版linux中都会明确指出版本。下载ubuntu时会明确要求你选择64位或32位的ubuntu;i386就是32位版本,x86_64为64位版本。在Shell中,可以用命令getconf LONG_BIT查看,或者命令uname -a(m)查看。

数据类型u_int32_t和int有什么区别?

驱动开发的原则:

能用__u32就最好用它,或者用u_int32_t之类的也可以,但不要直接用unsigned int等默认的数据类型。

目的是让别人明白,你这个变量占多大内存



原因:

你不能确定你的代码未来只在一个平台上运行,它可能会被移植到非Linux平台(确实有很多人这么做),它可能运行在不同的CPU平台,比如64位环境,非x86环境。

因为C语言中并

未明确规定int一定要占多少字节

,只是规定了long >= int >= short,所以__u32就是告诉别人,这变量占4字节。

同样的:__iomem也是能加就加,这样当你的驱动被别人维护的时候,别人会明白,这块内存是用于IO的,可DMA的,而不是paged-memory。

说到底,

这是一种良好的编码风格

,确实,不加这些东西,对于编译和运行来说,可能是无任何影响的,但是,不写注释的代码一样也对编译和运行无影响,

你敢一句注释都不写吗?

--------------------------------------

驱动中使用哪种类型最标准,这个没有正确答案,但建议是不使用C语言原始的数据类型(char/short/int/long),而是使用有明确字节大小的数据类型(u_int32_t/__u32/uint32_t/DWORD/UINT32均可)。保持代码风格的一致性即可。

Linux社区提倡开放,并不严格限制开发者必须用哪种类型,一切都只是

建议使用

。但有一种情况是例外的:开发标准库函数,比如自己实现strlen,那么返回值就必须是size_t,因为标准库是标准的。

到此,以上就是小编对于的问题就介绍到这了,希望这3点解答对大家有用。

分享标题:c语言打印double类型?windowsx86long
URL链接:http://www.shufengxianlan.com/qtweb/news4/341204.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联