`
奥义之舞
  • 浏览: 284505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C/C++ %d等简单格式类型总结

 
阅读更多
   关于这部分的内容,自己每次用的时候都是去翻书,或者上网查,但是一直没有发现一篇文章很系统的介绍这一部分的内容,直到读完了《C陷阱与缺陷》,在附录中总结了格式化输入输出的符号,及其修饰符,今天暂且根据该书整理了简单格式类型部分,后续的修饰符会另写总结,本文旨在便于笔者查阅和方便各位博友。

  简单格式类型
格式字符串中的每个格式项都是由一个%符号打头,后面接一个称为格式码的字符,格式码指明了格式转换的类型。

首先最常用的就是%d, 以10进制打印一个整数。例如:
Printf(“2 + 2 = %d\n”, 2 + 2);

将打印出
2 + 2 = 4.


%u格式项与%d类似,不同之处是%u打印无符号10进制整数。例如:
Printf(“%u\n”,-37);

将打印出4294967259.

%o, %x, %X用于打印8进制或者16进制的整数。
%x, 用小写字母a, b, c, d, e, f来表示10到15的数位值
%X, 用大写字母A, B, C, D, E, F来表示10到15的数位值。
例如:
int n = 108;
printf( “%d decimal = %o octal = %x hex = %X HEX \n”, n, n, n, n);

将打印出:
108 decimal = 154 octal = 6c hex = 6C HEX


%s
用于打印一个字符串:与之对应的参数应该是一个字符指针,指向待输出的字符串首字符的地址,知道遇见一个空字符’\0’才终止。%s格式项所对应输出的字符串必须以一个空字符’\0’作为结束标志。 因为printf函数要一次来定位一个字符串何时结束。如果与%s对应的字符串并不是以空字符’\0’作为结束标志,那么printf函数将不断打印出其后面的字符,直到在内存中某处找到一个空字符’\0’为止。这时输出就可能相当的长。
例如:
Printf (“There %s %d item%s in the list. \n”, n!=1? “are”: “is”, n, n!=1? “s”: “”);

如果n为37,输出将是:
There are 37 items in the list.

如果n为1, 输出将是
There is 1 item in the list.

注:
Printf(s);


Printf(”%s”, s);

两者含义并不相同,前者把字符串s中的任何%字符视为一个格式项的标志,其后的字符会被视为格式码,如果除%%之外的任何格式码在字符串中出现,而后面有没有对应的参数,将会带来麻烦。而后者将会打印出任何一空字符结尾的字符串。
NULL指针并不指向任何实际的内存位置,因此肯定也不可能指向一个字符串。因此,
Printf(“%s \n”, NULL);
的结果将难以预料。

%c
用于打印单个字符:
Printf(“%c”, c);

等效于
Putchar(c);
但是前者的适应性和灵活性更好,能够把字符c的值嵌入某个更大的上下文中。与%c格式项对应的参数是一个为了打印输出而被转换为字符型的整型值。例如:
Printf( “The decimal equivalent of ‘%c’ is %d \n”, ‘*’, ‘*’);

将打印出:
The decimal equivalent of ‘*’ is 42.


%g, %e, %f这3个格式项用于打印浮点值。
%g
去掉数字尾缀的0,保留6位有效数字。因此,
Printf(“%g %g %g %g %g %g\n”, 1/1.0, 1/2.0, 1/3.0, 2/3.0, 1/4.0, 0.0);

将打印出
1         0.5  0.333333  0.666667(四舍五入)  0.25  0
如果一个数的绝对值大于999999, 按%g的格式打印这个字符,会采用科学计数法来打印,例如:
Printf(“%g\n”, 123456789.0);

将打印出:
1.23457e+08
对于很小的数值,除非该数的指数小于或等于-5, %g格式项才会采用科学计数法表示。因此:
Printf(“%g %g %g\n”, 3.14159e-3, 3.14159e-4, 3.14159e-5);

将打印出:
0.00314159  0.000314159    3.14159e-05
%e和%f格式则在用于打印浮点数是,分别要求一律显式地使用指数形式和禁止使用指数来表示浮点数。例如:
Printf( “%e %f”, 123456789, 123456789)

将打印出:
1.234567e+08  123456789.000000

注:
%e和%f对有效数字的保留是小数点后6位有效数字,跟%g的总共6位有效数字不同。

%E和%G格式项跟对应的%e和%g在行为上基本相同,但是科学计数法的e改用E。
%%格式用于打印一个%符号。
如有错误,请留言指正,谢谢。

文章转载自:http://blog.sina.com.cn/s/blog_4a339b640100s4hz.html
分享到:
评论

相关推荐

    编译原理-词法分析C/C++

    在C/C++编程语言中,词法分析的目标是识别出关键字、标识符、数字、运算符、界限符和字符串等不同类型的记号。 #### 实验内容详解 本实验旨在设计并实现一个简易的词法分析器,用以解析C/C++源代码。具体而言,...

    C/C++中结构体(struct)知识点强化

    在C/C++编程语言中,**结构体(struct)**是一种用户自定义的数据类型,它允许开发者将不同类型的变量组合在一起形成一个单一的实体。这为解决复杂问题提供了极大的灵活性。例如,我们可能需要创建一个学生记录,其中...

    C/C++ 函数指针教程

    总结来说,函数指针及其相关概念如回调函数和Functors是C/C++编程中的重要工具,掌握这些技术对于编写高效、灵活和可扩展的程序至关重要。通过本文的介绍,希望能帮助读者更好地理解和运用这些高级特性。

    cJSON.c,json在c/c++中使用

    总结,cJSON库为C/C++开发者提供了一种高效、简洁的方式来处理JSON数据。通过理解其基本数据结构和提供的API,开发者可以方便地在C或C++程序中读写JSON,无论是在Linux还是Windows平台上。在实际项目中,正确地使用...

    华为笔试C/C++

    以上内容总结了华为笔试C/C++面试题目的核心知识点,涉及了静态变量和函数、引用与指针的区别、实时系统的基本特性、数据结构、内存管理等多个方面。这些知识点不仅对笔试和面试有帮助,也是日常编程工作中经常遇到...

    creatFile.zip_c/C++_创建以当前系统时间为名称的文档_获取系统当前时间

    总结,使用C/C++创建以当前系统时间为名称的文件,主要包括以下几个步骤: 1. 使用`std::time`获取当前时间。 2. 使用`std::ctime`或`std::strftime`将时间戳转换为字符串。 3. 使用`std::ofstream`创建文件,并用...

    用C/C++打印刘亦菲的9种写法

    ### 用C/C++打印刘亦菲的9种...以上九种方法分别展示了使用C/C++的不同方式来打印“刘亦菲”,涵盖了基本的字符串输出、宏定义、类型转换、虚函数调用等多种技术手段,这些方法各有特点,在不同的场景下可以灵活应用。

    c/c++实现 顺序表

    ### C/C++ 实现顺序表知识点详解 #### 一、基础知识概述 在计算机科学中,**顺序表**是一种基本的数据结构,它通过一组连续的内存空间来存储一系列数据元素。顺序表中的每个元素都可以通过其索引来直接访问,因此...

    Dijkstra算法求最短路径的C/C++程序一

    ### Dijkstra算法求最短路径的C/C++程序解析 #### Dijkstra算法简介 Dijkstra算法是一种用于查找图中两点间最短路径的算法。它适用于有向图和无向图,但要求图中的所有边权重均为非负值。该算法通过逐步扩展一个...

    复数追赶法解三对角矩阵方程c/c++源码

    在C/C++中实现复数追赶法,需要定义复数类型,并编写相应的计算函数。例如,`ctrade.cc`和`ctrade0.cc`可能包含了这些功能。它们可能包含以下关键部分: - 复数结构体定义:`struct Complex { double real, imag; }...

    CC++程序设计(吴国风_宣善立主编)部分课后题答案

    总结起来,这些题目覆盖了C/C++程序设计的基础知识,包括循环结构、条件判断、输入输出、数学运算、变量与数据类型、数列求和、阶乘计算以及用户交互等核心概念。通过解决这些问题,学习者可以巩固对C/C++编程基础的...

    浅析ARM汇编 C语言 C++ 相互调用的方法

    例如,C语言中的函数`void fun(double d)`会被编译为`_fun`这样的符号,而C++则可能编译为包含类型信息的符号,如`_fun_double`或`_xxx_funDxxx`。这使得C++可以直接识别并调用C语言编写的库函数。 ##### 3. 在C++...

    MATLAB编译并调用C、C++程序

    接下来,我们需要编写一个简单的C/C++程序。例如,下面是一个名为`test.cpp`的文件,用于计算笛卡尔坐标系下的极坐标: ```cpp #include "mex.h" #include void Desc2Pol(double dbX, double dbY, double *pdbA, ...

    C/C++面试经典题目

    根据给定文件的信息,我们可以总结出以下C/C++面试中的经典知识点: ### 1. 预处理器(Preprocessor) 预处理器是C/C++编译过程中一个非常重要的组成部分,它在实际编译之前对源代码进行处理。在面试中经常会被问...

    C/C++获取目录下的文件列表信息

    现在我们来看一个简单的C/C++程序示例,展示如何在Linux和Windows下获取目录下的文件列表: ```c #include <sys/types.h> #include #include #include int main() { DIR *dir; struct dirent *ptr; dir = ...

    利用C/C++二进制读写png文件的方法示例

    在本文中,我们将探讨如何使用C/C++进行PNG文件的二进制读写,并通过一个简单的示例代码来解释其基本原理。 首先,PNG文件格式由多个块组成,每个块都有一个特定的用途,例如头部信息、图像数据等。读取和写入PNG...

    18年C++/C面试总结大全

    ### 18年C++/C面试总结大全 #### 小知识点详解 ##### 输出代码本身 **法一:** 此方法巧妙地通过替代特殊字符来避免递归引用问题。使用`char34`来表示双引号(`"`),用`endl`来代替换行符(`\n`)。这种方法避免了...

    C++获取当前系统时间

    在IT领域,特别是编程语言如C++中,获取系统时间是一项基本且重要的功能,它广泛应用于日期时间戳的记录、定时任务的设定、系统状态监控等场景。本文将基于提供的文件信息,深入探讨C和C++中获取系统时间的多种方法...

    C++四种类型转换

    本文将详细介绍C++中的四种类型转换方式:C风格类型转换、`const_cast`、`dynamic_cast`、`reinterpret_cast`和`static_cast`,并探讨它们的特点和应用场景。 #### 二、C风格类型转换 在C++中,C风格类型转换仍然...

Global site tag (gtag.js) - Google Analytics