C++语法学习
输出控制
cout
进制输出
using namespace std;
int main(){
int s;
cin>>s;
cout<< oct<<"oct:"<<s<<endl;//用八进制格式显示数值.
cout<< hex<<"hex:"<<s<<endl;//十六进制输出,默认小写输出
cout<< setiosflags(ios::uppercase)<<hex<<"hex:"<<s<<endl;//用十六进制格式大写显示数值.
cout<< dec<<"dec:"<<s<<endl;//用十进制格式显示数值.
return 0;
}
运行结果
10
oct:12
hex:a
hex:A
dec:10
强制采用小数
——防止使用科学计数法
cout<<fixed; |
采用科学计数法显示浮点数
cout<<scientific; |
在非负数值前面显示”+(正号)”
cout<<showpos; |
以大写的形式显示科学记数法中的”e”和十六进制格式的”x”
cout<<uppercase;//与上面的setiosflags(ios::uppercase)等同 |
控制显示精度
cout << setprecision(7);//保留小数点后7位 |
printf
此处额外提一点,对于输出要求复杂与精度确认的情况还是可以才哟红
`pritnf
比较方便快捷:
输出控制符
控制符 | 说明 |
---|---|
%d | 按十进制整型数据的实际长度输出。 |
%ld | 输出长整型数据。 |
%md | m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。 |
%u | 输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。 |
%c | 用来输出一个字符。 |
%f | 用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。 |
%.mf | 输出实数时小数点后保留 m 位,注意 m 前面有个点。 |
%o | 以八进制整数形式输出,这个就用得很少了,了解一下就行了。 |
%s | 用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串,这个稍后再讲。 |
%x(或 %X 或 %#x 或 %#X) | 以十六进制形式输出整数,这个很重要。 |
%x、%X、%#x、%#X 的区别
|
输出结果:
2f
2F
0x2f
0X2F
注意:
从输出结果可以看出:如果是小写的
x
,输出的字母就是小写的;如果是大写的X
,输出的字母就是大写的;如果加一个#
,就以标准的十六进制形式输出。最好是加一个
#
,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加
#
容易造成误解。但是如果输出0x2f
或0x2F
,那么人家一看就知道是十六进制。而且%#x
和%#X
中,我认为大写的比较好,因为大写是绝对标准的十六进制写法。
cout与printf
cout
控制格式不如printf
方便
大数字常用数据类型
数据类型范围
int
4字节,$2^{32}$,2147483648 到 2147483647;
unsigned int
4个字节,0 到 4294967295;
long
4字节,$1$~$2^{31}$,(2,147,483,647),约21亿;
unsigned long
4字节,$1$~$2^{32}$,约42亿;
long long
8字节,$1$~$2^{63}$,(9,223,372,036,854,775,807),约$9e18$;
取余与取整
整数取余
cout<<20%6<<endl; |
整数取整
cout<<20/6<<endl; |
浮点数取余
浮点数取余采用函数
double fmod(double x, double y)
返回 x 除以 y 的余数。
注意:数据类型必须为double,否则数据精度容易出错
cout<<fmod(4.85,0.25)<<endl; |
浮点数取整
浮点数取整采用
double floor( double arg )
函数返回参数不大于arg
的最大整数
注意:数据类型必须为double,否则数据精度容易出错
cout<<floor(4.85/0.25)<<endl; |