变量与基本类型

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是一个整形引用,需要初始化

基本数据类型与字符串

基本数据类型与字符串

一、变量

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())

  • 函数 str() : str(int())、str(float())

  • 函数 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)
2、赋值运算符
运算符描述
= 简单赋值运算符
+= 加法赋值运算符
-= 减法赋值运算符
*= 乘法赋值运算符
/= 除法赋值运算符
%= 取模赋值运算符
**= 幂赋值运算符
//= 取整赋值运算符
"""赋值运算符"""
# =    简单赋值运算符
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)
3、比较运算符
运算符描述
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
"""比较运算"""  # 结果为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
4、逻辑运算符
运算符逻辑表达式描述 
and x and y x、y 都为真才为真,有一个为假即为假  
or x or y x、y 有一个为真即为真,都为假为假  
not not x 如果 x 为假,则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)
5、成员运算符
运算符描述
in 如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。

 

"""成员运算符"""
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)
6、身份运算符(id()函数)
运算符描述
is is 是判断两个标识符是不是引用自一个对象
is not 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)
2、转义字符
转义字符描述作用
\\n 换行 打印换行
\\ 转义符 打印有特殊含义的字符
\\t 制表符 空4个字符
"""转义字符"""
# \\n 换行
print("大家好!\\n表演开始")
# \\ 转义字符
print("大家好!\\\\n表演开始")
# \\t 制表符 空4个字符
print("大家好!\\t表演开始")
3、字符串格式化符合
符号描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%p 用十六进制数格式化变量的地址
"""字符串格式化符合"""
print("大家好我叫%s" % "李梓杰" + "\\n我今年%d" % 21, "\\n我的升高%s" % "179.9")
4、字符串拼接(字符串之字面量插值)
  • "str".format()
设置指定位置,按默认顺序"".format("h","e")
设置指定位置 "01".format("h","e")
通过名称传递变量 "我叫name,今年age岁".format(name = "张虎",age = 8)
"""字符串拼接"""
# 设置指定位置,按默认顺序  "".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))
  • f"xxxx
name = "李梓杰"
age = 20
print(f"我叫name,今年age")
  • +:需要保证每一个变量值必须都是字符串类型
print("大家好我叫%s" % "李梓杰", "!我今年%d" % 21 + "我的升高%s" % "179.9")

五、字符串常用API

1、jion 列表之转换字符串
"""jion 列表之转换字符串"""
list_a = [\'a\', \'p\', \'p\', \'l\', \'e\']
print("".join(list_a))
2、split数据切分操作
"""split数据切分操作"""
a = "apple red"
print(a.split(" "))
b = "hello world"
print(b.split(" "))
3、replace将目标字串替换想要的字符
""" replace将目标字串替换想要的字符"""
a = "My name is lizijie"
print(a)
print(a.replace("lizijie", "lizihao"))
4、strip 去掉首尾空格
""" replace将目标字串替换想要的字符"""
a = " My name is lizijie "
print(a)
print(a.strip())

 

 

 

本文来自博客园,作者:jiuyou-emperor,转载请注明原文链接:https://www.cnblogs.com/jiuyou-emperor/

以上是关于变量与基本类型的主要内容,如果未能解决你的问题,请参考以下文章

java八大基本数据类型与运算符

java八大基本数据类型与运算符

实验二:数据类型与运算符 2基本语法与变量实训

Python从零开始:变量与基本数据类型

变量的基本类型与零值-GOLANG

Cpp 变量与基本类型