查看: 145|回复: 2

c++数据类型与运算符知识总结和例题代码

[复制链接]

4

主题

11

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2023-4-10 10:01:57 | 显示全部楼层 |阅读模式
1.  #include<iostream>  编译预处理指令之一
Using namespce std;  使用命名空间std
每个C++程序有且只有一个主函数
2. 单行注释//   多行注释/* */
3. 数据类型
基本类型:整型:(短整型 short int 2)(整型 int 4)(长整型 long int 4)
  字符型char 1
  实型:(单精度型 float 4)(双精度型 double 8)(长双精度型 long double 8)
其他类型:(布尔型 bool)(枚举类型 enum)(数组类型)(结构体类型 struct)(共用体类型 union)(类类型 class)(指针类型)(引用类型)(空类型 void)
Tip!!
void用于两种情况:1.函数无返回值或参数2.定义指针时指针的目标类型不确定
4. 字符型常量 两个单撇号  字符串型常量  两个双撇号
5. 整型常量:  十进制  第一个不为0
  八进制  第一个必为0
  十六进制  0x(0X)开头
在后面加L(l)指定为long类型,U(u)为unsigned类型,但是与数值之间不能有空格!
6. 实型常量:(浮点数)  格式:<数符>数字E指数  E2代表10的平方
在内存中以规范化指数形式存储
数字部分必须小于1,小数点后第一个数必须非0)
7. 字符常量: 都只占1B 内存中存放二进制代码(ASII码)
   普通字符:单撇号  包含一个字符  ‘10’错误!!
   转义字符:  \n 换行  10
\0 空字符  0
\ddd 1~3位八进制数
\xhh 1~2位十六进制数
字符串常量: “” 空字符串
  系统自动在字符串结尾处添加一个空字符’\0’,标志一  个字符串的终结 ,导致长度多1B
   符号常量:  #define 预处理宏替换指令
  格式:#define 符号常量标识符 常量值
   常变量:  const  数据类型  常变量标识符=常量值;
  必须在定义的时候赋值
8. 变量:  如果没有赋初值的情况下:
  局部变量  初值不确定
  全局变量  初值0
9. 标识符  只由字母,数字,下画线组成 必须字母或下画线开头!!!
10. 关键字(不能作为标识符)
asm auto  bool break case catch  char class const const_cast continue default delete do double dynamic_cast else enum explicit  export extern  false float for friend goto if inline int long mutable namespace  new operator private protected public register  reinterpret_cast  return short signed sizeof static static_cast struct switch  template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_r while
11.  赋值运算符有返回值
  / 结果取整  % 操作数,结果为整型
i++后置  先引用,自身+1
++i前置  先+1, 后引用   
12. 逻辑运算符:
!非 > && 与 > || 或
13. 在比较两个实数(浮点数,双精度数)相等时,看差值的绝对值大于或小于给定的小数值
14. 逗号(优先级最低)表达式的结果是最右边表达式的值
如:a=3,b=9 的值为9
15.  sizeof()不是函数,是一种单目运算符。
   不要把|||&&&混淆了 newdelete也是运算符
补充:(重要)
&
  (1)按位运算符; (2)逻辑运算符
  作为逻辑运算符时,&左右两端条件式有一个为假就会不成立,但是两端都会运行,比如(1+2)=4 &(1+2)=3;1+2=4即使为假也会去判断1+2=3是否成立。
&&——逻辑运算符
  &&也叫做短路运算符,因为只要左端条件式为假直接不成立,不会去判断右端条件式。
相同点:只要有一端为假,则语句不成立
|和||都是表示“或”。区别是||只要满足第一个条件,后面的条件就不在判断,而|要对所有的条件都进行判断。
16.  数据类型转换:
(1)隐式转换(自动转换)边转换边计算
  • 自动将字符型转换为整型
  • 由低字节向高字节转换,非布尔值向布尔值转换
  (short 2/char 1)-int 4-unsigned 4-long 4-unsigned long 4-double 8
  float 4-double 8
例子:‘A’-10+5*2.0+20.8/4=65-10+10.0+5.2=65.0+5.2=70.2
(2)显式转换(强制转换)  转换后再次使用值不发生变化!!!
  格式:(类型)表达式  或  类型(表达式)
• 计算原则:转换为当前表达式中字节数最高的类型进行运算,同
字节情况下有浮点数就转化为浮点数运算。
先计算,后赋值。
/*按从小到大的顺序输出两个整数*/
#include<iostream>
using namespace std;
int print(int x,int y)
{
int z;
if(x<y)
{
z=x;
x=y;
y=z;
}
cout<<x<<" "<<y<<endl;
}
int main()
{
int a,b,m;
cin>>a>>b;
print(a,b);
return 0;
}



//判断输入的浮点数是否为0
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float f_tast;
cin>>f_tast;
if(fabs(f_tast)<=1e-6)
{
cout<<"输入的数据约等于0";
}
if(fabs(f_tast)>1e-6)
  {
cout<<"输入的数据大于0";
}

return 1;
}//判断闰年 1.能被4整除,不能被100整除 2.能被400整除
//(year%4==0&&year%100!=0)||year%400==0
个人解法:
#include<iostream>
using namespace std;
int main()
{
cout<<"请输入年份:"<<endl;
int year,day;
cin>>year;
if((year%4==0&&year%100!=0)||year%400==0)
{
day=31+29+31+30+4;
cout<<day;
}
else
{
day=31+28+31+30+4;
cout<<day;
}

return 0;
}
教材解法:
#include<iostream>
using namespace std;
int main()
{
cout<<"请输入年份:"<<endl;
int year,day;
cin>>year;
day=31+28+31+30+31+4;//计算非闰年的天数
if((year%4==0&&year%100!=0)||year%400==0) //判断闰年
{
day++;
}
cout<<year<<"年的第"<<day<<"天是5月4日";
return 0;
}

//例题
#include<iostream>
using namespace std;
int main()
{
double a=3.3,b=1.1;
int i=a/b;
cout<<i<<endl;
return 0;
}
i=2?浮点数(double是64位的)乘法和除法有精度损失,答案可能是 2.99999,被取整了  double a=3.3d,b=1.1d;不然会被强制转换
//例题(实现个位,十位,百位输出)
#include<iostream>
using namespace std;
int main()
{
int splitInt;
cout<<"输入一个3位正整数";
cin>>splitInt;
int one;
int ten;
int hundred;
hundred=splitInt/100;
ten=splitInt%100/10;
one=splitInt%10;
cout<<"个位:"<<one<<"十位:"<<ten<<"百位:"<<hundred;
return 0;
}

//例题!!!易错
#include<iostream>
using namespace std;
int main()
{
int a,b;
cout<<"input a,b:";
cin>>a>>b;
cout<<"a="<<a<<","<<"b="<<b<<endl;
cout<<"(a++)+b="<<(a++)+b<<"\n"; //1+2
cout<<"a+++b="<<a+++b<<"\n";  //此时a的值改变了 2+2
return 0;
}



//假如两个正整数都不是很大,(例如都不超过1000),不引进第三个变量,如何交换两个整数变量的值?
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
   a=a+b;

b=a-b;

a=a-b;
return 0;
}
int a,b;
a=10; b=15; 标准算法
int t;
t=a; a=b; b=t;
//从键盘上输入一个整型的数,让它与一个浮点型数比较大小,并输出其中较大那个数
#include<iostream>
using namespace std;
int main()
{
int a;
float b;
cin>>a>>b;
if(a>b)cout<<a;
else cout<<b;

return 0;
}
回复

使用道具 举报

4

主题

9

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2023-4-10 10:02:31 | 显示全部楼层
对c++感兴趣  欢迎关注CSDN 社区我的博客
m0_64120172的博客
小白学习中
共同进步
回复

使用道具 举报

3

主题

9

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2025-4-11 10:19:28 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表