[C++] printf pitfall】的更多相关文章

printf pitfal l…
运算符/的运算结果和运算对象的数据类型有关,两个数都是in,则商就是int,取整数部分:被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不去掉小数部分如:16/5 == 3:16/5.0 == 3.20000 :-13/4 == -4 取余%的运算对象必须是整数,结果是整除后的余数,余数的符号与被除数的符号相同如:13%3 == 1: 13%-3 == 1 :-13%3 == -1 &&运算符左边的语句为假时,右边的不执行 如:int i = 1,j = 2,k; k = (…
一 printf和scanf(printf和scanf是c语言中的输入输出库函数) printf(”格式控制“,输出列表) <1>格式控制 其中包含 格式声明(%+相应格式对应字母).转义字符(\n).格式附加字符(左靠).和普通字符(普通字符会原样输出) 1格式声明:%+d或i(整型),f(浮点型(double.float)),c(字符型),s(字符串型),e或E(指数型大写E会使输出的e也大写),o.x(分别代表八进制和十六进制x可以大写同样输出十六进制也是大写),u(无符号型),g或G(…
函数原型: printf(Control-String, item1, item2, ...); 表一  转换说明符及作为结果的打印输出 转 换 说 明 输    出 %a 浮点数.十六进制数字和p-记数法(C99) %A 浮点数.十六进制数字和P-记数法(C99) %c 一个字符 %d 有符号十进制整数 %e 浮点数.e-记数法 %E 浮点数.E-记数法 %f 浮点数,十进制记数法 %g 根据数值不同自动选择%f或者%e.%e格式在指数小于-4或者大于等于精度时使用 %G 根据数值不同自动选择…
C语言中,将printf函数打印出的字符像表格一样分类对齐.%-10d表示这个字符型占10个字节,负号表示左对齐.即下面表格中的x1位置开始填充.如果是%10d,表示右对齐,即在x10位置对齐. x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 #include<stdio.h> int main(int argc,char **argv) { printf(,"local ip"); printf(,"remote ip"); ; } 运行…
昨天遇到一个奇葩的问题,服务器正常运行但经常出现客户端无法连接的问题.我很好奇,在accept返回的地方断点,发现无法accept了.这就怪了,以前从没出现过这种情况.服务器网络用的asio,无法accept应该就是线程阻塞了,我暂停查看了一下所有线程,发现服务器在收到一个链接的时候,暂停了.暂停的地方是printf,连接成功之后写日志,顺便写到控制台了一份,竟然在printf暂停了.这..人与计算机之间最基本的信任呢!!我把线程数量减少到1个,仍然有这个问题,但是关闭printf之后就不会有这…
问题 当我们刚开始学习C语言的时候,就接触到printf()函数,可是当时"道行"不深或许不够细心留意,又或者我们理所当然地认为库函数规定这样就是这样,没有发现这个函数与普通的函数存在区别,普通函数的参数在函数定义的时候就确定,而printf()函数的参数列表在调用时可变.还有一个原因导致我们没有去关注这个函数的实现,就是在编程的过程中很少用到参数列表可变的函数.的确是这样的,但是如果可以理解并内化,这将在编程过程中对某些功能实现带来很大的帮助.比如,在嵌入式设备开发中,可以利用设备的…
printf的特殊用法:对于m.n的格式可以用如下方法表示 前边的 *   定义的是总的宽度,后边的 * 定义的是输出的个数.分别对应外面的参数m和n .这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式. #include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.*lf\n",c,(double)a/b); ; }…
[题外话] 以前用HUSTOJ给学校搭建Online Judge,所有的评测都是在Linux下进行的.后来为了好往学校服务器上部署,所以大家重新做了一套Online Judge,Web和Judge都是基于Windows和.NET平台的.这两天将学校Online Judge中以前在Linux下(GCC 4.6.3)评测的提交全部在Windows上(GCC 4.7.2 MinGW)重测一遍,结果莫名其妙发现很多以前通过的题目现在出现了结果错误的问题,其共同结果都是结果为0,查看源代码发现其都是使用p…
一.printf函数 这是(printf和scanf)在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h> 1.用法 1> printf(字符串) printf("Hello, World!"); 2> printf(字符串, 格式符参数) 1 // 使用常量作参数 2 printf("My age is %d\n", 26); 3 4 // 也可以使用变量 5 int age = 17; 6 printf…
1.有符号数和无符号数 有符号数就是最高位为符号位,0代表正数,1代表负数 无符号数最高位不是符号位,而就是数的一部分而已. 1011 1111 0000 1111 1111 0000 1011 1010,如果当有符号数看待,那么他是一个负数的补码,如果当一个无符号数看待,他就是一个正数的原码 无符号数最小为0,不可能是负数 定义一个无符号的int unsigned int a; //使用unsigned int 定义了一个无符号的int变量,名字叫a short,long,long long,…
一.puts() 函数详解 puts()函数用来向 标准输出设备 (屏幕)写字符串并换行,调用格式为: puts(s); 其中s为字符串变量(字符串数组名或字符串指针). puts()函数的作用与语 printf("%s\n", s) 相同. #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char s[20], *f; strcpy(s, "Hello…
1. echo (1) echo ,显示普通字符串 echo "HelloWorld" 打印:HelloWorld (2) \ ,显示转义字符串 echo "\"HelloWorld\"" 打印:"HelloWorld" (3) ${} ,显示变量,read接收标准输入变量 read name echo "输入的名字是 ${name}" (4) \n ,显示换行 echo -e " Ok \n&q…
1.调用格式为  printf("<格式化字符串>", <参量表>);   其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式.参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误. 2.格式化字符 %d…
1.scanf()函数 函数scanf()按指定的格式从键盘读取数据,并将其赋给一个或多个变量.例如: scanf(“%d %f”, &x,&rate);  输入多个变量时,scanf()使用空白将输入隔开.空白可以是空格.制表符或者换行符.格式化字符串中的每一个转换说明符对应一个输入字段,并且空白标识每个字段的结束.使用scanf()函数必须包含头文件stdio.h ]; scanf("%s", a); scanf函数会从a的首地址开始存放用户输入的字符,存放完毕后,…
都是把格式好的字符串输出,只是输出的目标不一样:1 printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向).2 sprintf,是把格式字符串输出到指定字符串中,所以参数比printf多一个char*.那就是目标字符串地址.3 fprintf, 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*.…
java中有三种方式向控制台输入信息,分别是print,printf,println,现在简单介绍一下他们之间的异同. printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和print基本没什么差别,就是最后会换行 看一下他们的效果: print:…
数据类型 常量 变量 printf函数介绍 scanf函数介绍 运算符 数据类型 数据类型是指数据在内存中存储的方式. C语言中有5大数据类型:基本类型.构造类型.指针类型.空类型.定义类型. C语言中常见的数据类型: 各种数据类型在内存中占用的空间大小:(单位:字节)(1 Byte = 8 bit) 16位编译器 32位编译器 64位编译器 char 1 1 1 Int 2 4 4 Float 4 4 4 Double 8 8 8 Short 2 2 2 Long 4 4 8 Long lon…
printf函数的格式及含义 d                    以十进制带符号的形式输出整数(对正数不输出符号) o                    以八进制无符号的形式输出整数(不输出前导符0) x                    以十六进制无符号的形式输出整数(不输出前导符0x) u                    以十进制无符号的形式输出整数 c                    输出一个字符 s                    输出一个字符串 f   …
出处:http://www.douban.com/note/248637026/ ----------------------------------------------------------------------------------------------- 作者:prife感谢:hexlog@gmail.com--------------------------------------------------------------------------------------…
#include <iostream> #include <string> #include <tuple>   #include <utility>   #include <array>   #include <string>   template<char...> struct STRING  { }; template<typename> struct STRING_LITERAL; template&l…
printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息.正在编写步骤时经常会用到此函数.printf()函数的挪用式样为: printf("<式样化字符串>",<参量表>): 其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出:另一部分是式样化规定字符, 以"%"开端, 后跟一个或几个规定字符, 用来确定输出内容式样. 参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个…
print:将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后. println: 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始. printf:是格式化输出的形式.printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出:但是不换行 println和print基本没什么差别,就是最后会换行 System.out.printf("the number is: d",t); 格式化: 'd'…
1. cut [选项] 文件名 -f  列号 #提取第几列(分隔符默认为\t) -d  分隔符 #指定分隔符 例如:cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始) cut -f 2,4 a.txt #截取文件a.txt内容的第二列和第四列 cut -d  ":"  -f 1,3 /etc/passwd #截取文件passwd文件的第1列和第三列,以:分割取其中的第一列和第三列 2. printf '输出类型 输出格式'  输出内容 输出类型: %ns 输…
1. 原样输出字符串:    printf("%s", str); 2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐:    printf("%Ns", str);             --N 为指定长度的10进制数值 3. 输出指定长度的字符串, 超长时不截断, 不足时左对齐:    printf("%-Ns", str);            --N 为指定长度的10进制数值 4. 输出指定长度的字符串, 超长时截断, 不足时…
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>  int main(){ int i=43; printf("%d\n",printf("%d",printf("%d",i))); return 0;} 输出 是4321: 先跑红色 输出43,返回值是2:再跑蓝色 输出2,返回值是1,:再跑黄色 输出1: printf(""); 返回值类型是int ,返回值是…
printf背后的故事 说起编程语言,C语言大家再熟悉不过.说起最简单的代码,Helloworld更是众所周知.一条简单的printf语句便可以完成这个简单的功能,可是printf背后到底做了什么事情呢?可能很多人不曾在意,也或许你比我还要好奇!那我们就聊聊printf背后的故事. 一.printf的代码在哪里? 显然,Helloworld的源代码需要经过编译器编译,操作系统的加载才能正确执行.而编译器包含预编译.编译.汇编和链接四个步骤. #include<stdio.h> int main…
以前学习于渊老师的<自己动手写操作系统>一书的时候,也自己实现过printf,不过那是比较简单的版本.最近看<程序员面试宝典>,做到这么一道题目:#include <stdio.h>int main{    printf("%f",5);    printf("%d",5.01);} 问题是输出什么?题目不难但很细节:第一个输出0.000000,因为printf函数遇到%f,认为参数是个double类型(printf函数中floa…
1.转换说明符       %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)       %c             字符       %d             有符号十进制整数       %f              浮点数(包括float和doulbe)       %e(%E)     浮点数指数输出[e-(E-)记数法]       %g(%G)     浮点数不显无意义的零"0"       %i              有符号十进制整数(…
/** *----------------------------stdio.h--------------------------------------- * int printf(const char *format, ...) * int fprintf(FILE *stream, const char *format, ...) * int sprintf(char *str, const char *format, ...) * int snprintf(char *str, siz…