JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:C 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  C 编译器介绍

2.  特定于 C 编译器实现的信息

2.1 常量

2.1.1 整型常量

2.1.2 字符常量

2.2 链接程序作用域说明符

2.3 线程局部存储说明符

2.4 浮点,非标准模式

2.5 作为值的标签

2.6 long long 数据类型

2.6.1 输出 long long 数据类型

2.6.2 常见算术转换

2.7 switch 语句中的 case 范围

2.8 断言

2.9 支持的属性

2.10 警告和错误

2.11 Pragma

2.11.1 align

2.11.2 c99

2.11.3 does_not_read_global_data

2.11.4 does_not_return

2.11.5 does_not_write_global_data

2.11.6 dumpmacros

2.11.7 end_dumpmacros

2.11.8 error_messages

2.11.9 fini

2.11.10 hdrstop

2.11.11 ident

2.11.12 init

2.11.13 inline

2.11.14 int_to_unsigned

2.11.15 must_have_frame

2.11.16 nomemorydepend

2.11.17 no_side_effect

2.11.18 opt

2.11.19 pack

2.11.20 pipeloop

2.11.21 rarely_called

2.11.22 redefine_extname

2.11.23 returns_new_memory

2.11.24 unknown_control_flow

2.11.25 unroll

2.11.26 warn_missing_parameter_info

2.11.27 weak

2.12 预定义的名称

2.13 保留 errno 的值

2.14 扩展

2.14.1 _Restrict 关键字

2.14.2 _ _asm 关键字

2.14.3 __inline__inline__

2.14.4 __builtin_constant_p()

2.14.5 __FUNCTION____PRETTY_FUNCTION__

2.15 环境变量

2.15.1 PARALLEL

2.15.2 SUN_PROFDATA

2.15.3 SUN_PROFDATA_DIR

2.15.4 TMPDIR

2.16 如何指定 include 文件

2.16.1 使用 -I- 选项更改搜索算法

2.16.1.1 警告

2.17 在独立式环境中编译

2.18 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持

3.  并行化 C 代码

4.  lint 源代码检验器

5.  基于类型的别名分析

6.  转换为 ISO C

7.  转换应用程序以适用于 64 位环境

8.  cscope:交互检查 C 程序

A.  按功能分组的编译器选项

B.  C 编译器选项参考

C.  实现定义的 ISO/IEC C99 行为

D.  C99 的功能

E.  实现定义的 ISO/IEC C90 行为

F.  ISO C 数据表示法

G.  性能调节

H.  Oracle Solaris Studio C:K&R C 与 ISO C 之间的差异

索引

2.4 浮点,非标准模式

本节概述了 IEEE 754 浮点缺省运算,该运算是“不停止的”。下溢是“渐进的”。有关更多详细信息,请参见《数值计算指南》。

不停止意味着遇到除数为零、浮点下溢或无效操作异常时执行不会停止。例如,考虑以下算式,其中 x 为零,y 为正数:

z = y / x;

缺省情况下,z 设置为值 +Inf,执行不会停止。但是,如果设置 -fnonstd 选项,此代码会导致退出,如信息转储。

下例说明了渐进下溢的工作方式。假设您有下列代码:

x = 10;
for (i = 0; i < LARGE_NUMBER; i++)
x = x / 10;

第一次执行循环时,x 设置为 1;第二次执行循环时,设置为 0.1;第三次执行循环时,设置为 0.01,依此类推。最后,x 达到比较低的值,以致机器无法表示其值。下次循环运行时将出现什么情况?

假设可表示的最小数为 1.234567e-38

下次循环运行时,将通过去掉一位尾数并且指数减去 1 来修改该数,因此新值为 1.23456e-39,然后为 1.2345e-40,依此类推。此行为称为“渐进下溢”,它是缺省行为。在非标准模式下,不会发生这种“去位”情况,x 将被简单地设置为零。