第一篇:黑马程序员Python教程python re 模块及正则表达式调用认识-2
python re 模块及正则表达式调用认识-2
foo匹配foo,也可以是foobar。而正则foo$只配foo.>>> print re.search(r'foo$','foo').group()
foo
>>> print re.search(r'foo$','foobar').group()#匹配失败
Traceback(most recent call last):
File “
”, line 1, in
print re.search(r'foo$','foobar').group()
AttributeError: 'NoneType' object has no attribute 'group'
>>>
在 'foo1nfoo2n' 中用foo.$进行匹配可以得到foo2,但在MULTILINE模式中得到的是foo1.对$在’foon‘中进行searching,则会匹配到两个空白,一个在新行之前,一个在字符串的结尾。
>>> print re.search(r'foo.$','foo1nfoo2n').group()
foo2
>>> print re.search(r'foo.$','foo1nfoo2n',re.M).group()
foo1
>>>
>>> print re.search(r'$','foo1nfoo2n').group()
>>>
'*'----匹配前一个字符0次或无限次
>>> print re.search(r'fo*','foooo').group()
foooo
>>> print re.search(r'fo*','f').group()#可以匹配前一个字符零次
f
>>>
’+‘----匹配前一个字符1次或无限次。ab+将匹配a之后的b至少一次。
>>> print re.search(r'fo+','foooo').group()
foooo
>>> print re.search(r'fo+','f').group()
Traceback(most recent call last):
File “
”, line 1, in
print re.search(r'fo+','f').group()
AttributeError: 'NoneType' object has no attribute 'group'
>>>
’?‘----匹配前一个字符0次或一次。ab? 将匹配a 或者ab
>>> print re.search(r'fo?','foooo').group()
fo
>>> print re.search(r'fo?','f').group()
f
>>>
*?, +?,??----'*','+','?'都是贪婪匹配限定符;尽可能多的匹配内容,但有时候没必要这样,’<.*>'对'
title
'进行匹配,将会匹配整个字符串不只是'',对其限定符后添加‘?’,这样就会得到非贪婪匹配或者得到最小匹配。尽可能的少匹配字符;用.*?在表达式之前,则会只匹配''。
>>> print re.search(r'fo*?','foeeeerrfoeeb').group()# *匹配零次
f
>>> print re.search(r'fo*?','foooorrfooob').group()
f
>>> print re.search(r'fo+?','foeeeerrfoeeb').group()# + 匹配一次
fo
>>> print re.search(r'fo+?','foooorrfooob').group()
fo
>>> print re.search(r'fo??','foeeeerrfoeeb').group()# ?匹配一次
f
>>> print re.search(r'fo??','foooorrfooob').group()
f
>>>
>>> print re.search(r'<.*>','
title
').group()title
>>> print re.search(r'<.*?>','
title
').group()>>>
对其限定符后添加‘?’,这样就会得到非贪婪匹配或者得到最小匹配
{m}---刚好匹配m次,不少也不多
>>> print re.search(r'fo{3}','foooo').group()
fooo
>>> print re.search(r'fo{2}','foooo').group()
foo >>>
{m,n}----匹配正则m到n次,a{3,5} will match from 3 to 5'a' characters。m缺省时表示0,n缺省时表示无限次。a{4,}b will matchaaaab or a thousand'a' characters followed by ab, but notaaab.中间的逗号不能省略。
>>> print re.search(r'a{,4}b','aaab').group()
aaab >>> print re.search(r'a{4,}b','aaab').group()
Traceback(most recent call last):
File “
”, line 1, in
print re.search(r'a{4,}b','aaab').group()
AttributeError: 'NoneType' object has no attribute 'group' >>>
{m,n}?----非贪婪模式,匹配最少的m次。For example, on the 6-character string 'aaaaaa', a{3,5} will match 5'a' characters,while a{3,5}? will only match 3 characters.>>> print re.search(r'a{3,5}b','aaaaaab').group()
aaaaab
>>> print re.search(r'a{3,5}?b','aaaaaab').group()#这种后面还有字符的情况容易出错,实际还是以n来计算的
aaaaab
>>> print re.search(r'a{3,5}?','aaaaaab').group()
aaa
>>>
‘'----转义字符,用来匹配 *,?等等。不是使用raw string的情况下,Python also uses the backslash as an escape sequence in string literals;也就是不使用r'XXX时,要使用两次反斜杠才能表示一个反斜杠,用raw简单些。
>>> print re.search(r'a*?','aa*?b').group()
a*?
>>> print re.search('a*?','aa*?b').group()
a*?
>>>
[ ]---存放字符集,1)中括号中的字符可以是单个的,e.g.[amk] will match'a','m', or'k'.>>> print re.search('[amk]','sdafgfhmrtykyy').group()
a >>> print re.search('[amk].','sdafgfhmrtykyy').group()
af
>>> print re.search('[mka].','sdafgfhmrtykyy').group()
af
是或关系,匹配了a,就没有再匹配 m,k。
第二篇:黑马程序员Python教程python XlsxWriter模块创建aexcel表格-1
python XlsxWriter模块创建aexcel表格-1
安装使用pip install XlsxWriter来安装,Xlsxwriter用来创建excel表格,功能很强大,下面具体介绍:
1.简单使用excel的实例:
#coding:utf-8
import xlsxwriter
workbook = xlsxwriter.Workbook('d:suq estdemo1.xlsx')#创建一个excel文件
worksheet = workbook.add_worksheet('TEST')#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
worksheet.set_column('A:A',20)
#设置第一列宽度为20像素
bold = workbook.add_format({'bold':True})#设置一个加粗的格式对象
worksheet.write('A1','HELLO')
#在A1单元格写上HELLO
worksheet.write('A2','WORLD',bold)
#在A2上写上WORLD,并且设置为加粗
worksheet.write('B2',U'中文测试',bold)#在B2上写上中文加粗
worksheet.write(2,0,32)
#使用行列的方式写上数字32,35,5
worksheet.write(3,0,35.5)
#使用行列的时候第一行起始为0,所以2,0代表着第三行的第一列,等价于A4
worksheet.write(4,0,'=SUM(A3:A4)')#写上excel公式 worksheet.insert_image('B5','f:1.jpg')#插入一张图片
workbook.close()
2.常用方法说明 1.Workbook类
Workbook类创建一个XlsxWriter的Workbook对象,代表整个电子表格文件,存储到磁盘上.add_worksheet():用来创建工作表,默认为sheet1 add_format():创建一个新的格式对象来格式化单元格,例如bold=workbook.add_format({'bold':True})还可以使用set_bold,例如:bold=workbook.add_format()bold.set_bold()
#border:边框,align:对齐方式,bg_color:背景颜色,font_size:字体大小,bold:字体加粗
top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True})
add_chart(options):创建一个图表对象,内部是使用insert_chart()方法来实现的,options(dict类型)为图表指定一个字典属性 close():关闭文件
2.Worksheet类
worksheet代表一个Excel的工作表,是XlsxWriter的核心,下面是几个核心方法
write(row,col,*args):写普通数据到工作表的单元格,row行坐标,col列坐标,起始都是以0开始,*args为写入的内容,可以是字符串,文字,公式等,writer方法已经作为其它更具体数据类型方法的别名
write_string():写入字符串类型,worksheet.write_string(0,0,'your text')write_number():写入数字类型,worksheet.write_number('A2',1.1)write_blank():写入空类型数据,worksheet.write_blank('A2',None)wirte_formula():写入公式类型,worksheet.write_formula(2,0,'=SUM(B1:B5))write_datetime():写入日期类型数据,worksheet.write_datetime(7,0,datetime.datetime.strptime('2014-01-02','%Y-%m-%d),workbook.add_format({'num_format':'yyyy-mm-dd'}));write_boolean():写入逻辑类数据,worksheet.write_boolean(0,0,True)write_url():写入超链接类型数据,worksheet.write_url('A1','ftp://www.xiexiebang.com')write_column():写入到一列,后面接一个数组 wirte_row():写入到一行,后面接一个数组
set_row(row,height,cell_format,options):此方法设置行单元格的属性,row指定行位置,height指定高度,单位是像素,cell_format指定格式对象,参数options设置hiddeen(隐藏),level(组合分级),collapsed(折叠,例如: cell_format=workbook.add_format({'bold':True})worksheet.set_row(0,40,cell_format)设置第一行高40,加粗
set_column(first_col,last_col,width,cell_format,options):设置列单元格的属性,具体参数说明如上.worksheet.set_column(0,1,10)worksheet.set_column('C:D',20)insert_image(row,col,image[,options]):此方法是插入图片到指定单元格 例如插入一个图片的超链接为www.xiexiebang.com worksheet.insert_image('B5','f:1.jpg',{'url':'http://www.xiexiebang.com'})
第三篇:黑马程序员Python教程:Python培训专家:6个常见面试题
传智播客Python培训专家:6个常见面试题
在面试中,有一定比例是字符串处理以及网络编程那块,当然了肯定还有些其他的问题,下面帮大家找了6道题目,接下来小试牛刀吧!很简单的哦。
第1题:
Q:是否遇到过python的模块间循环引用的问题,如何避免它? A:这是代码结构设计的问题,模块依赖和类依赖 如果老是觉得碰到循环引用可能的原因有几点: 1.可能是模块的分界线划错地方了 2.可能是把应该在一起的东西硬拆开了 3.可能是某些职责放错地方了 4.可能是应该抽象的东西没抽象
总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工
采取办法,从设计模式上来规避这个问题,比如: 1.使用 “__all__” 白名单开放接口 2.尽量避免 import
第2题:
Q: Python中如何定义一个函数
A: 有2种方法:
第1种:
def func(arg, *args, **kwagrs):
#普通函数
func_body
return
第2种:
lambda x: x **2
#匿名函数
第3题:
Q:请写出一段Python代码实现删除一个list里面的重复元素 A:
>>> L1 = [4,1,3,2,3,5,1]
>>> L2 = []
>>> [L2.append(i)for i in L1 if i not in L2]
>>> print L2
[4, 1, 3, 2, 5]
运行结果如下图:
第4题:
Q:Python是如何进行内存管理的
A: python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。所有这些都是自动完成,不需要像C一样,人工干预,从而提高了程序员的效率和程序的健壮性。
第5题:
Q:写一个简单的Python socket编程
A: socket是用来进行网络编程用的接口,网络编程分为服务器端和客户端
服务器端代码如下: import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8001))
sock.listen(5)
while True:
conn, addr = sock.accept()
try:
conn.settimeout(5)
buff = conn.recv(1024)
if buff == '1':
conn.send('Hello, Client...')
else:
conn.send('Please, Go Out...')
except socket.timeout:
print 'Socket Time Out...'
finally:
conn.close()
客户端代码如下: import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 8001))
time.sleep(2)
sock.send('1')
print sock.recv(1024)
sock.close()
第6题:
Q:src = “security/afafsff/?ip=123.4.56.78&id=45”,请写一段代码用正则匹配出IP
A:
import re
src = “security/afafsff/?ip=123.4.56.78&id=45”
m = re.search('ip=(d{1,3}.d{1,3}.d{1,3}.d{1,3})', src, re.S)# re.S 改变'.'的行为
print m.group(1)
# 输出结果 >>> 123.4.56.78
运行结果如下:
第四篇:黑马程序员C语言教程:带你浅出python爬虫框架scrapy二)
带你深入浅出python爬虫框架scrapy(二)之前我们学习了scrapy的安装,接下来我们先简单的介绍一下使用。
一、创建一个新的Scrapy项目
scrapy startproject itcast 结构如下
│ scrapy.cfg │
└─itcast │ items.py
│ pipelines.py
│ settings.py
│ __init__.py
│
└─spiders __init__.py
这些文件主要是:
scrapy.cfg: 项目配置文件
itcast/: 项目python模块, 呆会代码将从这里导入 itcast/items.py: 项目items文件 itcast/pipelines.py: 项目管道文件 itcast/settings.py: 项目配置文件 itcast/spiders: 放置spider的目录
二、定义提取的Item 它通过创建一个scrapy.item.Item类来声明,定义它的属性为scrpy.item.Field对象,就像是一个对象关系映射(ORM).我们通过将需要的item模型化,来控制从dmoz.org获得的站点数据,比如我们要获得站点的名字,url和网站描述,我们定义这三种属性的域。要做到这点,我们编辑在itcast目录下的items.py文件,我们的Item类将会是这样
from scrapy.item import Item, Field class DmozItem(Item): title = Field()link = Field()desc = Field()
三、写一个Spider用来爬行站点,并提取Items
Spider是用户编写的类,用于从一个域(或域组)中抓取信息。
他们定义了用于下载的URL的初步列表,如何跟踪链接,以及如何来解析这些网页的内容用于提取items。要建立一个Spider,你必须为scrapy.spider.BaseSpider创建一个子类,并确定三个主要的、强制的属性:
name:爬虫的识别名,它必须是唯一的,在不同的爬虫中你必须定义不同的名字.start_urls:爬虫开始爬的一个URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些URLS开始。其他子URL将会从这些起始URL中继承性生成。
parse():爬虫的方法,调用时候传入从每一个URL传回的Response对象作为参数,response将会是parse方法的唯一的一个参数, 这个方法负责解析返回的数据、匹配抓取的数据(解析为item)并跟踪更多的URL。from scrapy.spider import BaseSpider
class DmozSpider(BaseSpider): name = “dmoz”
allowed_domains = [“dmoz.org”] start_urls = [ “http://#topics-selectors 这是一些XPath表达式的例子和他们的含义
/html/head/title: 选择HTML文档
元素下面的//div[@class=”mine“]: 选择所有包含 class=”mine“ 属性的div 标签元素
这只是几个使用XPath的简单例子,但是实际上XPath非常强大。
为了方便使用XPaths,Scrapy提供XPathSelector 类,有两种口味可以选择,HtmlXPathSelector(HTML数据解析)和XmlXPathSelector(XML数据解析)。为了使用他们你必须通过一个 Response 对象
对他们进行实例化操作。你会发现Selector对象展示了文档的节点结构。因此,第一个实例化的selector必与根节点或者是整个目录有关。Selectors 有三种方法
path():返回selectors列表, 每一个select表示一个xpath参数表达式选择的节点.extract():返回一个unicode字符串,该字符串为XPath选择器返回的数据 re():返回unicode字符串列表,字符串作为参数由正则表达式提取出来
现在我们尝试从网页中提取数据
from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector
class DmozSpider(BaseSpider): name = ”dmoz“
allowed_domains = [”dmoz.org“] start_urls = [ ”http://XPathSelector(response)sites = hxs.path('//fieldset/ul/li')#sites = hxs.path('//ul/li')for site in sites: title = site.path('a/text()').extract()link = site.path('a/@href').extract()desc = site.path('text()').extract()#print title, link, desc print title, link
保存抓取的数据
保存信息的最简单的方法是通过以下命令来保存数据: scrapy crawl dmoz-o items.json-t json 简单的使用就介绍这了,后面会继续为大家说明高级用法。
第五篇:黑马程序员C语言教程:C++语言78个常见编译错误及分析
C语言常见编译错误及分析大全 fatal error C1003: error count exceeds number;stopping compilation
中文对照:(编译错误)错误太多,停止编译 分析:修改之前的错误,再次编译 fatal error C1004: unexpected end of file found
中文对照:(编译错误)文件未结束
分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*„*/”不完整等 fatal error C1083: Cannot open include file: 'xxx': No such file or directory
中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径 分析:头文件不存在、或者头文件拼写错误、或者文件为只读 fatal error C1903: unable to recover from previous error(s);stopping compilation
中文对照:(编译错误)无法从之前的错误中恢复,停止编译 分析:引起错误的原因很多,建议先修改之前的错误 error C2001: newline in constant
中文对照:(编译错误)常量中创建新行 分析:字符串常量多行书写 error C2006: #include expected a filename, found 'identifier'
中文对照:(编译错误)#include命令中需要文件名
分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h” error C2007: #define syntax
中文对照:(编译错误)#define语法错误
分析:例如“#define”后缺少宏名,例如“#define” error C2008: 'xxx' : unexpected in macro definition
中文对照:(编译错误)宏定义时出现了意外的xxx
分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE“1”” error C2009: reuse of macro formal 'identifier'
中文对照:(编译错误)带参宏的形式参数重复使用
分析:宏定义如有参数不能重名,例如“#define s(a,a)(a*a)”中参数a重复 error C2010: 'character' : unexpected in macro formal parameter list
中文对照:(编译错误)带参宏的形式参数表中出现未知字符 分析:例如“#define s(r|)r*r”中参数多了一个字符‘|’ error C2014: preprocessor command must start as first nonwhite space
中文对照:(编译错误)预处理命令前面只允许空格
分析:每一条预处理命令都应独占一行,不应出现其他非空格字符 error C2015: too many characters in constant 中文对照:(编译错误)常量中包含多个字符 分析:字符型常量的单引号中只能有一个字符,或是以“”开始的一个转义字符,例如“char error = 'error';” error C2017: illegal escape sequence 中文对照:(编译错误)转义字符非法
分析:一般是转义字符位于 ' ' 或 “ ” 之外,例如“char error = ' 'n;” error C2018: unknown character '0xhh' 中文对照:(编译错误)未知的字符0xhh 分析:一般是输入了中文标点符号,例如“char error = 'E';”中“;”为中文标点符号 error C2019: expected preprocessor directive, found 'character' 中文对照:(编译错误)期待预处理命令,但有无效字符
分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1” error C2021: expected exponent value, not 'character' 中文对照:(编译错误)期待指数值,不能是字符
分析:一般是浮点数的指数表示形式有误,例如123.456E error C2039: 'identifier1' : is not a member of 'identifier2' 中文对照:(编译错误)标识符1不是标识符2的成员 分析:程序错误地调用或引用结构体、共用体、类的成员 error C2041: illegal digit 'x' for base 'n' 中文对照:(编译错误)对于n进制来说数字x非法
分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数 error C2048: more than one default 中文对照:(编译错误)default语句多于一个
分析:switch语句中只能有一个default,删去多余的default
error C2050: switch expression not integral 中文对照:(编译错误)switch表达式不是整型的
分析:switch表达式必须是整型(或字符型),例如“switch(“a”)”中表达式为字符串,这是非法的 error C2051: case expression not constant 中文对照:(编译错误)case表达式不是常量
分析:case表达式应为常量表达式,例如“case “a””中““a””为字符串,这是非法的 error C2052: 'type' : illegal type for case expression 中文对照:(编译错误)case表达式类型非法
分析:case表达式必须是一个整型常量(包括字符型)error C2057: expected constant expression 中文对照:(编译错误)期待常量表达式
分析:一般是定义数组时数组长度为变量,例如“int n=10;int a[n];”中n为变量,这是非法的 error C2058: constant expression is not integral 中文对照:(编译错误)常量表达式不是整数 分析:一般是定义数组时数组长度不是整型常量 error C2059: syntax error : 'xxx' 中文对照:(编译错误)‘xxx’语法错误
分析:引起错误的原因很多,可能多加或少加了符号xxx error C2064: term does not evaluate to a function 中文对照:(编译错误)无法识别函数语言
分析:
1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确
2、变量与函数重名或该标识符不是函数,例如“int i,j;j=i();”中i不是函数 error C2065: 'xxx' : undeclared identifier 中文对照:(编译错误)未定义的标识符xxx 分析:
1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误
2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。error C2078: too many initializers 中文对照:(编译错误)初始值过多
分析:一般是数组初始化时初始值的个数大于数组长度,例如“int b[2]={1,2,3};” error C2082: redefinition of formal parameter 'xxx' 中文对照:(编译错误)重复定义形式参数xxx 分析:函数首部中的形式参数不能在函数体中再次被定义 error C2084: function 'xxx' already has a body 中文对照:(编译错误)已定义函数xxx 分析:在VC++早期版本中函数不能重名,6.0版本中支持函数的重载,函数名可以相同但参数不一样
error C2086: 'xxx' : redefinition 中文对照:(编译错误)标识符xxx重定义 分析:变量名、数组名重名
error C2087: '
分析:一般是定义二维数组时未指定第二维的长度,例如“int a[3][];”
error C2100: illegal indirection
中文对照:(编译错误)非法的间接访问运算符“*” 分析:对非指针变量使用“*”运算
error C2105: 'operator' needs l-value 中文对照:(编译错误)操作符需要左值
分析:例如“(a+b)++;”语句,“++”运算符无效
error C2106: 'operator': left operand must be l-value 中文对照:(编译错误)操作符的左操作数必须是左值 分析:
例如“a+b=1;”语句,“=”运算符左值必须为变量,不能是表达式
error C2110: cannot add two pointers 中文对照:(编译错误)两个指针量不能相加
分析:例如“int *pa,*pb,*a;a = pa + pb;”中两个指针变量不能进行“+”运算
error C2117: 'xxx' : array bounds overflow 中文对照:(编译错误)数组xxx边界溢出
分析:一般是字符数组初始化时字符串长度大于字符数组长度,例如“char str[4] = “abcd”;”
error C2118: negative subscript or subscript is too large 中文对照:(编译错误)下标为负或下标太大
分析:一般是定义数组或引用数组元素时下标不正确 error C2124: divide or mod by zero 中文对照:(编译错误)被零除或对0求余 分析:例如“int i = 1 / 0;”除数为0
error C2133: 'xxx' : unknown size 中文对照:(编译错误)数组xxx长度未知
分析:一般是定义数组时未初始化也未指定数组长度,例如“int a[];”
error C2137: empty character constant。中文对照:(编译错误)字符型常量为空 分析:一对单引号“''”中不能没有任何字符
error C2143: syntax error : missing 'token1' before 'token2'
error C2146: syntax 4error : missing 'token1' before identifier 'identifier' 中文对照:(编译错误)在标识符或语言符号2前漏写语言符号1 分析:可能缺少“{”、“)”或“;”等语言符号
error C2144: syntax error : missing ')' before type 'xxx' 中文对照:(编译错误)在xxx类型前缺少‘)’ 分析:一般是函数调用时定义了实参的类型
error C2181: illegal else without matching if 中文对照:(编译错误)非法的没有与if相匹配的else 分析:可能多加了“;”或复合语句没有使用“{}”
error C2196: case value '0' already used 中文对照:(编译错误)case值0已使用 分析:case后常量表达式的值不能重复出现
error C2296: '%' : illegal, left operand has type 'float' 47 error C2297: '%' : illegal, right operand has type 'float' 中文对照:(编译错误)%运算的左(右)操作数类型为float,这是非法的
分析:求余运算的对象必须均为int类型,应正确定义变量类型或使用强制类型转换
error C2371: 'xxx' : redefinition;different basic types 中文对照:(编译错误)标识符xxx重定义;基类型不同 分析:定义变量、数组等时重名
error C2440: '=' : cannot convert from 'char [2]' to 'char' 中文对照:(编译错误)赋值运算,无法从字符数组转换为字符
分析:不能用字符串或字符数组对字符型数据赋值,更一般的情况,类型无法转换
error C2447: missing function header(old-style formal list?)51 error C2448: '
error C2450: switch expression of type 'xxx' is illegal 中文对照:(编译错误)switch表达式为非法的xxx类型
分析:switch表达式类型应为int或char
error C2466: cannot allocate an array of constant size 0 中文对照:(编译错误)不能分配长度为0的数组 分析:一般是定义数组时数组长度为0
error C2601: 'xxx' : local function definitions are illegal 中文对照:(编译错误)函数xxx定义非法
分析:一般是在一个函数的函数体中定义另一个函数
error C2632: 'type1' followed by 'type2' is illegal 中文对照:(编译错误)类型1后紧接着类型2,这是非法的 分析:例如“int float i;”语句
error C2660: 'xxx' : function does not take n parameters 中文对照:(编译错误)函数xxx不能带n个参数 分析:调用函数时实参个数不对,例如“sin(x,y);”
error C2664: 'xxx' : cannot convert parameter n from 'type1' to 'type2' 中文对照:(编译错误)函数xxx不能将第n个参数从类型1转换为类型2 分析:一般是函数调用时实参与形参类型不一致
error C2676: binary '<<' : 'class istream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator error C2676: binary '>>' : 'class ostream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator 分析:“>>”、“<<”运算符使用错误,例如“cin<
error C4716: 'xxx' : must return a value 中文对照:(编译错误)函数xxx必须返回一个值
分析:仅当函数类型为void时,才能使用没有返回值的返回命令。
fatal error LNK1104: cannot open file “Debug/Cpp1.exe” 中文对照:(链接错误)无法打开文件Debug/Cpp1.exe 分析:重新编译链接
fatal error LNK1168: cannot open Debug/Cpp1.exe for writing 中文对照:(链接错误)不能打开Debug/Cpp1.exe文件,以改写内容。分析:一般是Cpp1.exe还在运行,未关闭
fatal error LNK1169: one or more multiply defined symbols found 中文对照:(链接错误)出现一个或更多的多重定义符号。分析:一般与error LNK2005一同出现
error LNK2001: unresolved external symbol _main 中文对照:(链接错误)未处理的外部标识main 分析:一般是main拼写错误,例如“void mian()”
error LNK2005: _main already defined in Cpp1.obj 中文对照:(链接错误)main函数已经在Cpp1.obj文件中定义 分析:未关闭上一程序的工作空间,导致出现多个main函数
warning C4003: not enough actual parameters for macro 'xxx' 中文对照:(编译警告)宏xxx没有足够的实参 分析:一般是带参宏展开时未传入参数
warning C4067: unexpected tokens following preprocessor directive期待新行 分析:“#include
warning C4091: '' : ignored on left of 'type' when no variable is declared 中文对照:(编译警告)当没有声明变量时忽略类型说明 分析:语句“int;”未定义任何变量,不影响程序执行
warning C4101: 'xxx' : unreferenced local variable 中文对照:(编译警告)变量xxx定义了但未使用 分析:可去掉该变量的定义,不影响程序执行
warning C4244: '=' : conversion from 'type1' to 'type2', possible loss of data 中文对照:(编译警告)赋值运算,从数据类型1转换为数据类型2,可能丢失数据
分析:需正确定义变量类型,数据类型1为float或double、数据类型2为int时,结果有可能不正确,数据类型1为double、数据类型2为float时,不影响程序结果,可忽略该警告
warning C4305: 'initializing' : truncation from 'const double' to 'float' 中文对照:(编译警告)初始化,截取双精度常量为float类型 分析:出现在对float类型变量赋值时,一般不影响最终结果
warning C4390: ';' : empty controlled statement found;is this the intent? 中文对照:(编译警告)‘;’控制语句为空语句,是程序的意图吗?
分析:if语句的分支或循环控制语句的循环体为空语句,一般是多加了“;”
warning C4508: 'xxx' : function should return a value;'void' return type assumed 中文对照:(编译警告)函数xxx应有返回值,假定返回类型为void 分析:一般是未定义main函数的类型为void,不影响程序执行 c语言的错误对照表———— 在遇到错误时可以对照查看
warning C4552: 'operator' : operator has no effect;expected operator with side-effect 中文对照:(编译警告)运算符无效果;期待副作用的操作符 分析:例如“i+j;”语句,“+”运算无意义
warning C4553: '==' : operator has no effect;did you intend '='? 中文对照:(编译警告)“==”运算符无效;是否为“=”? 分析:例如 “i==j;” 语句,“==”运算无意义
warning C4700: local variable 'xxx' used without having been initialized 中文对照:(编译警告)变量xxx在使用前未初始化
分析:变量未赋值,结果有可能不正确,如果变量通过scanf函数赋值,则有可能漏写“&”运算符,或变量通过cin赋值,语句有误
warning C4715: 'xxx' : not all control paths return a value 中文对照:(编译警告)函数xxx不是所有的控制路径都有返回值
分析:一般是在函数的if语句中包含return语句,当if语句的条件不成立时没有返回值
warning C4723: potential divide by 0 中文对照:(编译警告)有可能被0除 分析:表达式值为0时不能作为除数
warning C4804: '<' : unsafe use of type 'bool' in operation 中文对照:(编译警告)‘<’:不安全的布尔类型的使用 分析:例如关系表达式“0<=x<10”有可能引起逻辑错误
文档为doc格式
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。