第一篇:黑馬程序員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.tmdps.cn')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.tmdps.cn worksheet.insert_image('B5','f:1.jpg',{'url':'http://www.tmdps.cn'})
第三篇:黑馬程序員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個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。