目录
  1. 1. C++语法学习
    1. 1.1. 输出控制
      1. 1.1.1. cout
      2. 1.1.2. printf
        1. 1.1.2.1. 输出控制符
        2. 1.1.2.2. %x、%X、%#x、%#X 的区别
      3. 1.1.3. cout与printf
    2. 1.2. 大数字常用数据类型
    3. 1.3. 取余与取整
      1. 1.3.1. 整数取余
      2. 1.3.2. 整数取整
      3. 1.3.3. 浮点数取余
      4. 1.3.4. 浮点数取整
C++语法学习02

C++语法学习

输出控制

cout

进制输出

#include <iostream>
#include <bits/stdc++.h>
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 的区别

# include <stdio.h>
int main(void)
{
int i = 47;
printf("%x\n", i);
printf("%X\n", i);
printf("%#x\n", i);
printf("%#X\n", i);
return 0;
}

输出结果:

2f
2F
0x2f
0X2F

注意:

从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。

最好是加一个#,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!

总之,不加#容易造成误解。但是如果输出 0x2f0x2F,那么人家一看就知道是十六进制。而且%#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<<540%8<<endl;
cout<<36%5<<endl;
cout<<95%6<<endl;

整数取整

cout<<20/6<<endl;
cout<<540/8<<endl;
cout<<36/5<<endl;
cout<<95/6<<endl;

浮点数取余

浮点数取余采用函数double fmod(double x, double y)返回 x 除以 y 的余数。

注意:数据类型必须为double,否则数据精度容易出错

cout<<fmod(4.85,0.25)<<endl;
cout<<fmod(9.45,0.23)<<endl;
cout<<fmod(7.86,0.22)<<endl;
cout<<fmod(12.22,0.16)<<endl;

浮点数取整

浮点数取整采用double floor( double arg )函数返回参数不大于arg的最大整数

注意:数据类型必须为double,否则数据精度容易出错

cout<<floor(4.85/0.25)<<endl;
cout<<floor(9.45/0.23)<<endl;
cout<<floor(7.86/0.22)<<endl;
cout<<floor(12.22/0.16)<<endl;
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-01/19/%E5%AD%A6%E4%B9%A0/C++study02/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论