AUTO在C语言中的用法,下面小程序NUM编译结果是怎样的,该怎样理解?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AUTO在C语言中的用法,下面小程序NUM编译结果是怎样的,该怎样理解?相关的知识,希望对你有一定的参考价值。
#include "stdio.h"
main()
int i,num;
num=2;
for (i=0;i<3;i++)
printf("\40: The num equal %d \n",num);
num++;
auto int num=1;
printf("\40: The internal block num equal %d \n",num);
num++;
简单的说,auto int num和外面的num互不影响 参考技术B
首先 这段代码的运行结果
: The num equal 2: The internal block num equal 1
: The num equal 3
: The internal block num equal 1
: The num equal 4
: The internal block num equal 1
这段代码里面定义了两个num
其中
auto int num=1;
printf("\\40: The internal block num equal %d \\n",num);
num++;
这段里面的num每次进入大括号时会重新初始化 并在退出后释放 所以每次都会打印1
而外面的num值的变化和这段代码无关 每次循环自加1
至于auto 这东西没用,因为C语言约定 所有的非全局变量默认属性为auto 也就是说 有它没它完全一样
类似的 有个关键字叫signed
int
signed int
auto int
auto signed int
这些都是一个意思
本回答被提问者和网友采纳文成小盆友python-num2 数据类型列表字典
一.先聊下python的运行过程
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到(然后通过比较确认是否为最新),则直接载入,否则就重复上面的过程。所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
二.数据类型基本操作
1.数字
int -- 整形
float -- 浮点型
complex -- 复数
2.布尔值
真或假
1 或 0
True 或 False
3.列表
1.创建列表方法:
1 #!/bin/env python 2 #-*- coding:utf-8 -*- 3 4 name = ["jack","stove","janny"] 5 6 ###或者 7 8 name = list(["jack","stove","janny"])
2.列表基本操作:
- 切片(取出多个值):
name[0:2] #取出从下标为0 到下标为2的所有值 (包含前面不包含后面) name[-5:-1] #取出后四个(不包含最后) name[-5:] #取出最后五个值 name[0:6:2] #最后值 2 为步长
- 修改值
name[2] = "LiMing" #直接修改下标为2的元素的值 name.insert(2,‘liMing‘) #用insert方法来添加将值插入到下标为2的位置 name.append("WangMeiei") #追加值
- 删除值
name.remove("LiMing") #直接写入要 删除的值 ##del为python全局功能 也可以删除包括字符串等其他类型 del name[1] #删除下标为1的元素 del name[1:3] #删除下标从1到3的值(不包括最后)
- 判断元素是否在内
# in 判断元素是否存在在列表中 name = ["abc","bbb","ccc","","ddd"] if "abc" in name: print("abc ") else: print("err")
- 统计元素的个数:
# name.count("abc") #统计元素 abc在列表中出现的次数
- 列表索引:
# name.index("abc") # 打印出元素9的索引
count和index的结合使用小实例:
num_list = [1,2,3,44,55,24,56,357,9,432,9,5,555,9,22,9,345,34,34,34,34,1111111,34] print(num_list) num_9 = num_list.count(9) print(num_9) for i in range(num_9): in_num = num_list.index(9) num_list[in_num] = 99999 print(num_list) num_34 = num_list.count(34) print(num_34) for i in range(num_34): in_num_34 = num_list.index(34) del num_list[in_num_34] print(num_list)
显示如下:
[1, 2, 3, 44, 55, 24, 56, 357, 9, 432, 9, 5, 555, 9, 22, 9, 345, 34, 34, 34, 34, 1111111, 34] 4 [1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 34, 34, 34, 34, 1111111, 34] 5 [1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 1111111] Process finished with exit code 0
- 列表追加(追加新列表)
#extend name = ["aaa","bbb","ccc"] name2 = ["ddd","eee","fff"] name.extend(name2) print(name) ###显示如下: [‘aaa‘, ‘bbb‘, ‘ccc‘, ‘ddd‘, ‘eee‘, ‘fff‘] Process finished with exit code 0
- 列表翻转:
name = ["aaa","bbb","ccc"] name2 = ["ddd","eee","fff"] name.reverse() print(name) ##显示如下: [‘ccc‘, ‘bbb‘, ‘aaa‘] Process finished with exit code 0
- 列表排序:
name = ["bbb","aaa","ccc"] name.sort() print(name) ###显示如下 [‘aaa‘, ‘bbb‘, ‘ccc‘] Process finished with exit code 0 ##python3.0中不允许数字与字符一起排序
- 列表复制:
name = ["bbb","aaa","ccc",[111,2222]] print(name) name2 = name.copy() print(name2) name[3][0]=3333 ##修改列表中所嵌套的列表的元素在比较 name[0] = "jjj" ##修改列表中的元素(非嵌套列表中的元素) print(name) print(name2) ###显示结果如下 [‘bbb‘, ‘aaa‘, ‘ccc‘, [111, 2222]] [‘bbb‘, ‘aaa‘, ‘ccc‘, [111, 2222]] [‘jjj‘, ‘aaa‘, ‘ccc‘, [3333, 2222]] [‘bbb‘, ‘aaa‘, ‘ccc‘, [3333, 2222]] #一级中的数值没有随着变化 Process finished with exit code 0 #######总结如下######## name2 与 name 互相没有影响但是内部有嵌套的列表时则会有共享 copy 默认只copy第一层
- 列表长度
name = ["bbb","aaa","ccc",[111,2222]] print(len(name)) ##显示 4
4.元组(不可变列表)
- 元组的声明:
name_t = ("abc","ddd","aaa")
- 元素个数统计
name_t.count("abc")
元组索引
name_t.index("abc")
5.字符串
- 移除空白:srtip()
name = input("please innsert your name:").strip() print(name)
- 字符串切分:
name = input("please innsert your name:").strip() name2 = name.split(",") print(name2)
显示如下:
please innsert your name:1,q,www,eert,gtf,d [‘1‘, ‘q‘, ‘www‘, ‘eert‘, ‘gtf‘, ‘d‘] Process finished with exit code 0
拓展join在这的使用:如下
name = input("please innsert your name:").strip() name2 = name.split(",") print(name2) print("|".join(name2)) ##显示如下:输入的内容为 1,qwe,qwe,xcf,sdfsd,sds please innsert your name:1,qwe,qwe,xcf,sdfsd,sds [‘1‘, ‘qwe‘, ‘qwe‘, ‘xcf‘, ‘sdfsd‘, ‘sds‘] 1|qwe|qwe|xcf|sdfsd|sds #----拼接后的内容
- 判断是否存在:in
name = input("please innsert your name:").strip() if " " in name : print("有空格。。。") else: print("无空格。。。") ##显示如下: 输入为dsf ds,,sdfkjdfs .sfd 有空格。。。
- 首字符大写:
capitalize():即使中间有大写字符也要改成小写 如下输出
name = ‘sdddDDFSFssd ‘ print(name.capitalize()) print(name) ###显示结果如下: Sdddddfsfssd sdddDDFSFssd Process finished with exit code 0
- 字符串的格式化
- 一般字符串格式化方法
1 user_name = input("plz insert your name: ") 2 user_age = int(input("plz insert your age: ")) 3 user_add = input("plz insert your add: ") 4 5 print(user_name,user_add,user_age) 6 msg = ‘‘‘ 7 Infomation of user : %s 8 ************************ 9 Name = %s 10 Age = %d 11 Add = %s 12 **********end*********** 13 ‘‘‘%(user_name,user_name,user_age,user_add) 14 print(msg) 15 16 ###结果如下 17 18 plz insert your name: 赵文成 19 plz insert your age: 22 20 plz insert your add: 北京 21 赵文成 北京 22 22 23 Infomation of user : 赵文成 24 ************************ 25 Name = 赵文成 26 Age = 22 27 Add = 北京 28 **********end*********** 29 30 31 Process finished with exit code 0
2.format方法格式化:
msg = "hello ,{name}, your age is {age},your addr is {add} ....." msg2 = msg.format(name=‘zhaowencheng‘,age=26,add=‘beijing‘) print(msg2) ##输出如下: hello ,zhaowencheng, your age is 22,your addr is beijing ..... Process finished with exit code 0
- 切片 :同列表
name = ‘123456789abcde‘ name1 = name[0] print(name1) name2 = name[6] print(name2) name3 = name[0:5] print(name3) name4 = name[0:5:2] print(name4) name5 = name[-1] print(name5) name6 = name[-5:] print(name6) ###对应显示分别如下 1 7 12345 135 e abcde
- center方法使用:
name = ‘welcome to shop‘ print(name.center(40,‘-‘)) #显示如下: ------------welcome to shop-------------
- isdigit()方法使用:
num = input("please insert a number:") if num.isdigit(): print("是数字") else: print("不是数字") ##显示的结果如下: please insert a number:sdfsd 不是数字 please insert a number:sdfsd 不是数字
- a.endswith() a.startswith() -- 以XX结尾 XX开头
num = input("please insert a str:") if num.endswith("m"): print("以m结尾") else: print("....") #结果如下: please insert a str:sfdm 以m结尾 please insert a str:sdfsd ....
- upper() lower() 分别是吧字符串大写,小写
name3 = ‘sdjfFsFFfj‘ print(name3.upper().lower()) ##输出结果为 sdjffsfffj
6.字典
- 定义字典:
dic = {"key":"value"}
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
- 字典取值 两种方式取值分别如下
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } print(id[1]["name"]) print(id.get(1).get("name"))
##打印内容为:
aaa
aaa
- 字典的添加(修改) 有就修改,没有就添加
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } id[1] = {"name":"ddd","age":226} print(id) #### {1: {‘name‘: ‘ddd‘, ‘age‘: 226}, 2: {‘name‘: ‘bbb‘, ‘age‘: 24}, 3: {‘name‘: ‘ccc‘, ‘age‘: 25}}
- 字典删除 del pop 如下del
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } id[1] = {"name":"ddd","age":226} print(id) del id[1] print(id) #### {1: {‘name‘: ‘ddd‘, ‘age‘: 226}, 2: {‘name‘: ‘bbb‘, ‘age‘: 24}, 3: {‘name‘: ‘ccc‘, ‘age‘: 25}} {2: {‘name‘: ‘bbb‘, ‘age‘: 24}, 3: {‘name‘: ‘ccc‘, ‘age‘: 25}} Process finished with exit code 0
- 字典更新 update
如下: id中的值被id2中的对应key的值更新(前提是id2中的key在id中也存在)
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } id2 = { 1: {"name": "sss", "age": 23}, } id3 = id.update(id2) print(id) ###输出如下: {1: {‘name‘: ‘sss‘, ‘age‘: 23}, 2: {‘name‘: ‘bbb‘, ‘age‘: 24}, 3: {‘name‘: ‘ccc‘, ‘age‘: 25}} ##可以看到结果中key为1 的value被id2给更新了
- 字典.items
1 id = { 2 1: {"name": "aaa", "age": 23}, 3 2: {"name": "bbb", "age": 24}, 4 3: {"name": "ccc", "age": 25}, 5 } 6 id2=id[1] 7 print(id2.items()) 8 9 ##输出结果 10 dict_items([(‘age‘, 23), (‘name‘, ‘aaa‘)]) 11 12 Process finished with exit code 0
- 字典.keys
1 id = { 2 1: {"name": "aaa", "age": 23}, 3 2: {"name": "bbb", "age": 24}, 4 3: {"name": "ccc", "age": 25}, 5 } 6 7 print(id.keys()) 8 9 ##输出如下: 10 dict_keys([1, 2, 3])
- 字典.value
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } print(id.values()) ##输出如下 dict_values([{‘name‘: ‘aaa‘, ‘age‘: 23}, {‘name‘: ‘bbb‘, ‘age‘: 24}, {‘name‘: ‘ccc‘, ‘age‘: 25}])
- 字典成员 in (2.0版本可用 has_key)
id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } if 1 in id: print("1 在id中") ## 输入如下: 1 在id中
- 字典 setdefault("key","v") --有值则取出 没有则值设置为v
1 id = { 2 1: {"name": "aaa", "age": 23}, 3 2: {"name": "bbb", "age": 24}, 4 3: {"name": "ccc", "age": 25}, 5 } 6 7 8 print(id.setdefault(4,"abc")) 9 print(id.setdefault(1,"abc")) 10 ## 11 abc 12 {‘age‘: 23, ‘name‘: ‘aaa‘} 13 14 Process finished with exit code 0
- 字典循环
##常用的循环取值方式如下: id = { 1: {"name": "aaa", "age": 23}, 2: {"name": "bbb", "age": 24}, 3: {"name": "ccc", "age": 25}, } print(id.items()) for k,v in id.items(): print(k,v) #此种方式过程中需要将字典转换为列表,如果数据量大的话则效率低 ## for k in id: print(k,id[k]) #相对效率高 ###打印结果如下: 1 {‘name‘: ‘aaa‘, ‘age‘: 23} 2 {‘name‘: ‘bbb‘, ‘age‘: 24} 3 {‘name‘: ‘ccc‘, ‘age‘: 25} 1 {‘name‘: ‘aaa‘, ‘age‘: 23} 2 {‘name‘: ‘bbb‘, ‘age‘: 24} 3 {‘name‘: ‘ccc‘, ‘age‘: 25} Process finished with exit code 0
字典enumerate
for item in enumerate(id): print(item) ##结果如下 (0, 1) (1, 2) (2, 3) Process finished with exit code 0
三.运算符
- 算数运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
- 比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 以上是关于AUTO在C语言中的用法,下面小程序NUM编译结果是怎样的,该怎样理解?的主要内容,如果未能解决你的问题,请参考以下文章 |