变量与基本类型
Posted etherovo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量与基本类型相关的知识,希望对你有一定的参考价值。
c++11
- using -- 2.5.1
- auto -- 2.5.2
- decltype -- 2.5.3
2.5 处理类型
2.5.1 类型别名
- typedef
typedef double aliasOfDouble, *aliasOfDoublePtr, &aliasOfDoubleRef;
- using
using aliasOfDouble =double;
using aliasOfDoublePtr =double*;
using aliasOfDoubleRef =double&;
- 类型别名与类型等价
- 复合类型的类型别名是一个整体,不可拆分来理解
typedef double *aliasOfDoublePtr;
const aliasOfDoublePtr p;
const double *p;//非等价形式,直接拆分是错误的,并非指向常量的指针。
double *const p;//等价的形式,const是用于修饰double*双精度浮点数指针的,因此是常量指针。
2.5.2 auto类型说明符
- 用于在声明时由编译器根据右值的数据类型推算数据类型
auto i = 0;//int
- 一条语句可以声明多个变量,但是基本数据类型必须相同
auto i=0, *p=&i; //正确,都是整形
auto x=0, y=1.1; //错误,基本类型不同
- 引用作为右值实则是其引用的对象,所以auto是其引用对象的数据类型,而非引用类型
- 上面说到auto不会是引用类型,那么引用类型通过
auto &
实现
int y = 10;
auto & x = y;
- 同为复合数据类型的指针,指针类型既可以使用
auto
,也可以使用auto *
。 - auto忽略右值的顶层const,不会忽略底层const。
- 如果希望包含顶层const,则需要明确指出
const auto x = 10;
- 对于
auto &
,保留auto&类型顶层const。
2.5.3 decltype类型指示符
- decltype()使得编译器不必进行表达式或者函数计算,而是取其返回值的数据类型作为自动类型,这样一来变量可以初始化为其他值;
decltype(f()) sum = x;
- decltype的自动类型包含引用和顶层const,不同于auto
- 因为decltype可以生成引用类型,如果要去引用,使得其生成引用所指的类型,可以将其作为表达式的一部分
int i=10, &r=i;
decltype(r+0) b;
- 解引用操作的返回类型是引用类型
int i=10, *p=&i;
decltype(*p) b;//错误,b是一个int&,需要初始化
- 变量加括号
(x)
是一个变量表达式,返回值是可以作为左值的x的引用
decltype((i)) d;//错误,d是一个整形引用,需要初始化
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17331621.html
基本数据类型与字符串
一、变量
1、变量的三要素:变量名、变量值、变量数据类型
2、格式:变量名称 = 变量值
3、输出变量:print(变量名)
""" 变量 """ # 1、变量的三要素:变量名、变量值、变量值的数据类型 # 2、定义变量的格式:变量名 = 变量值 money = 1080 # 变量名 ---> money 变量值 ---> 1080 变量的数据类型 ---> int # 3、输出变量:print(变量名) print(money, type(money)) # type() 查看变量的数据类型
4、变量的命名规则
-
变量名由字母、数字、下划线构成(数字不能开头)
-
大小写敏感(A、a是两个不同的变量)
-
不要跟关键字和系统保留字冲突
"""变量名称的命名规则""" # 变量名由字母、数字、下划线构成(数字不能开头) a = 6 print(a, type(a)) a2 = \'Hello World\' print(a2, type(a2)) student_name = \'张提升\' print(student_name, type(student_name)) # 大小写敏感(A、a是两个不同的变量) A = 3 a = 6 print(A) print(a) # 不要跟关键字和系统保留字冲突(in,on,class)
1、数据类型
-
整数型(int):表示整数 ---> 1,-2,235
-
浮点型(float):表示小数 ---> 1.5,3.14,88.5;
-
字符串型(str): ‘hello’
-
布尔值型(bool):表示真假判断 --->True/False
-
空值型(None): 表示什么也没有 ---> 空白,没有任何数据
-------> 获取数据中的数值类型:type()函数
"""数据类型""" # 整数型(int):表示整数 age = 12 print(age, type(age)) # 浮点型(float):表示小数 high = 178.9 print(high, type(high)) # 字符串型(str): ‘hello’ name = "李梓杰" print(name, type(name)) # 布尔值型(bool):表示真假判断 --->True/False a = True b = False print(a, type(a)) print(b, type(b)) # 空值型(None): 表示什么也没有 ---> 空白,没有任何数据 address = None print(address, print(address))
2、数据类型转换
-
函数 int() : int(str())、int(float()) str本身是整数 不会四舍五入
-
函数 float() : float(str()) 、 float(int())
-
-
函数 bool():bool(" ")、bool(0)、bool(None) False 其余True
"""数据类型转换""" # 1、函数 int() : int(str())、int(float()) str本身是整数 不会四舍五入(round()函数) a = "65" # 字符串转整数型,必须本身是整数形态 print(type(a)) charge_a = int(str(a)) print(type(charge_a)) # 字符串转浮点型,必须本身是小数形态 b = "3.58" print(type(b)) charge_b = float(str(b)) print(type(charge_b)) # 2、 函数 float() : float(str()) 、 float(int()) c = "3.58" print(type(c)) charge_c = float(str(c)) print(type(charge_c)) c1 = 88 print(c1, type(c1)) charge_c1 = float(int(c1)) print(c1, type(charge_c1)) # 函数 str() : str(int())、str(float()) d = 22 print(type(d)) charge_d = str(int(d)) print(type(charge_d)) d1 = 3.15 print(type(d1)) charge_d1 = str(float(d1)) print(type(charge_d1)) # 函数 bool():bool(" ")、bool(0)、bool(None) False 其余True f = 6 e = 9 print(bool(f)) print(bool(e)) print(bool("")) print(bool(0)) print(bool(None))
三、运算符
1、算数运算符
-
加减乘除(+、-、*、/)
-
幂次方(**)
-
只保留结果整数部分的除法(//)
-
取余(%)
"""算数运算符""" # 加减乘除(+、-、*、/) a = 6 b = 7 print(a + b) # 13 print(a - b) # -1 print(a * b) # 42 print(round(a / b, 2)) # round()保留指定的小数位,会四舍五入 # 幂次方(**) c = 9 print(c ** 2) print(c ** 3) # 只保留结果整数部分的除法(//) d = 6 f = 5 print(d // f) # 取余(%) a1 = 11 a2 = 5 print(a1 % a2)
描述 | |
---|---|
= | 简单赋值运算符 |
+= | 加法赋值运算符 |
-= | 减法赋值运算符 |
*= | 乘法赋值运算符 |
/= | 除法赋值运算符 |
%= | 取模赋值运算符 |
**= | 幂赋值运算符 |
//= |
"""赋值运算符""" # = 简单赋值运算符 a = 5 # 右边赋值给左边 print(a) # += 加法赋值运算符 a1 = 3 a1 = a1 + 1 a1 += 2 print(a1) # -= 减法赋值运算符 b = 10 b = b - 1 b -= 1 print(b) # *= 乘法赋值运算符 c = 3 c = c * 3 c *= 2 print(c) # /= 除法赋值运算符 d = 6 d = d / 3 d /= 3 print(round(d, 2)) # %= 取模赋值运算符 e = 1 e = e % 2 e %= 1 print(e) # **= 幂赋值运算符 f = 3 f = f ** 3 f **= 4 print(f) # //= 取整赋值运算符 g = 10 g = g // 6 g //= 6 print(g)
描述 | |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= |
"""比较运算""" # 结果为bool布尔值 # ==等于 # !=不等于 # > 大于 # < 小于 # >=大于等于 # <=小于等于 a = 6 b = 8 print(a == b) # F print(a > b) # F print(a < b) # T print(a >= b) # F print(a <= b) # T print(a != b) # T
逻辑表达式 | 描述 | ||
---|---|---|---|
and | x and y | x、y 都为真才为真,有一个为假即为假 | |
or | x or y | x、y 有一个为真即为真,都为假为假 | |
not | not x |
"""逻辑运算符""" a = 9 b = 10 # and x and y x、y 都为真才为真,有一个为假即为假 print(a < b and b > a) # or x or y x、y 有一个为真即为真,都为假为假 print(a + b > b and a + b < a) # not not x 如果 x 为假,则not x为真 print(not a > b)
描述 | |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | 如果在指定的序列 |
"""成员运算符""" list_a = [1, 5, 8, 9, 45] # in 如果在指定的序列中找到值返回 True,否则返回 False。 print(1 in list_a) print("a" in list_a) # not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 print("b" not in list_a) print(45 not in list_a)
描述 | |
---|---|
is | is 是判断两个标识符是不是引用自一个对象 |
is not |
# 可变的数据结构(list),即使看着一样,但是内存地址是不同的 # 不可变的数据类型(整型、字符串型),如果看着一样,那么他们的内存地址是相同的 """身份运算符""" # id()函数 a = 6 b = 4 c = 6 print(id(a)) print(id(b)) print(id(c)) list_a = [123456, "321"] list_b = [2, 8, 9] print(id(list_a)) print(id(list_b)) # is 是判断两个标识符是不是引用自一个对象 print(a is c) print(a is b) print(list_a is list_b) # is not 是判断两个标识符是不是引用自不同对象 print(a is not b) print(list_a is not list_b) print(a is not c)
1、字符串格式
-
单行:
str_a = "this is a str"
-
多行
str_b = """ 这是一段字符串 我是谁 """
# 格式: # 单行 name = "李梓杰" print(name, type(name)) name2 = "张" \\ "l" print(name2) # 多行 str_a = """今天我很好你觉得呢""" str_b = """大家给 我一个礼物""" print(str_a, type(str_a)) print(str_b)
描述 | 作用 | |
---|---|---|
\\n | 换行 | 打印换行 |
\\ | 转义符 | 打印有特殊含义的字符 |
\\t | 制表符 |
"""转义字符""" # \\n 换行 print("大家好!\\n表演开始") # \\ 转义字符 print("大家好!\\\\n表演开始") # \\t 制表符 空4个字符 print("大家好!\\t表演开始")
描述 | |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%p |
"""字符串格式化符合""" print("大家好我叫%s" % "李梓杰" + "\\n我今年%d" % 21, "\\n我的升高%s" % "179.9")
"str".format()
"".format("h","e") | |
---|---|
设置指定位置 | "01".format("h","e") |
通过名称传递变量 |
"""字符串拼接""" # 设置指定位置,按默认顺序 "".format("h","e") print("这是".format("h", "e")) # 设置指定位置"01".format("h","e") 索引 print("这是10".format("h", "e")) # 通过名称传递变量 "我叫name,今年age岁".format(name = "张虎",age = 8) print("我叫name,今年age岁".format(name="张虎", age=8))
name = "李梓杰" age = 20 print(f"我叫name,今年age")
print("大家好我叫%s" % "李梓杰", "!我今年%d" % 21 + "我的升高%s" % "179.9")
"""jion 列表之转换字符串""" list_a = [\'a\', \'p\', \'p\', \'l\', \'e\'] print("".join(list_a))
"""split数据切分操作""" a = "apple red" print(a.split(" ")) b = "hello world" print(b.split(" "))
""" replace将目标字串替换想要的字符""" a = "My name is lizijie" print(a) print(a.replace("lizijie", "lizihao"))
""" replace将目标字串替换想要的字符""" a = " My name is lizijie " print(a) print(a.strip())
本文来自博客园,作者:jiuyou-emperor,转载请注明原文链接:https://www.cnblogs.com/jiuyou-emperor/
以上是关于变量与基本类型的主要内容,如果未能解决你的问题,请参考以下文章