可能有如下原因:
1、庫函數拼寫(xiě)錯誤。如:printf,scanf等。
2、定義的函數名在調用時(shí),函數名拼寫(xiě)錯誤。
3、在執行函數時(shí)可能函數體本身的問(wèn)題。
4、檢查一下任務(wù)欄,一般都是上一次“運行”的小黑窗還沒(méi)關(guān),然后執行“編譯”,由于該文件正在被使用,程序沒(méi)法執行編譯,所以就報了這樣的錯誤。
解決方法:把剛才運行的cmd窗口關(guān)閉。
擴展資料:
注意事項
c語(yǔ)言實(shí)現多次輸入可以引入頭文件#include
"stdafx.h"和#include
"stdio.h"。
創(chuàng )建主函數void
main(){},在主函數中添加如下代碼:
int
number
=
0;
while
(true)
{
printf("請輸入數字:");scanf("%d",&number); }
經(jīng)常需要一個(gè)函數自執行,可惜這一種寫(xiě)法是錯的:復制代碼代碼如下:function(){alert(1);}();原因是前半段“function(){alert(1);}”被當成了函數聲明,而不是一個(gè)函數表達式,從而讓后面的“();”變得孤立,產(chǎn)生語(yǔ)法錯。
按上面的分析,這一段代碼雖說(shuō)沒(méi)有語(yǔ)法錯,但也是不符合我們的預期的,因為這個(gè)函數并沒(méi)有自執行。復制代碼代碼如下:function(){alert(1);}(1);正確的寫(xiě)法多種多樣,也各有利弊:方法1:最前最后加括號復制代碼代碼如下:(function(){alert(1);}());這是jslint推薦的寫(xiě)法,好處是,能提醒閱讀代碼的人,這段代碼是一個(gè)整體。
例如,在有語(yǔ)法高亮匹配功能的編輯器里,光標在第一個(gè)左括號后時(shí),最后一個(gè)右括號也會(huì )高亮,看代碼的人一眼就可以看到這個(gè)整體。不過(guò),對于某些寫(xiě)代碼不喜歡在行后加分號的同學(xué),也會(huì )形成一些坑坑,例如以下代碼會(huì )報運行錯:復制代碼代碼如下:var a=1(function(){alert(1);}());方法2:function外面加括號復制代碼代碼如下:(function(){alert(1);})();這種做法比方法1少了一個(gè)代碼整體性的好處。
方法3:function前面加運算符,常見(jiàn)的是!與void 。復制代碼代碼如下:!function(){alert(1);}();void function(){alert(2);}();顯然,加上“!”或“+”等運算符,寫(xiě)起來(lái)是最簡(jiǎn)單的。
加上“void ”要敲五下鍵盤(pán),但是聽(tīng)說(shuō)有一個(gè)好處是,比加"!"少一次邏輯運算。----我只是聽(tīng)說(shuō),不明所以。
最后,代表我個(gè)人,強烈支持方法1,即jslint的推薦寫(xiě)法:復制代碼代碼如下:(function(){alert(1);}());。
這種叫自執行函數表達式
在這種情況下,解析器在解析function關(guān)鍵字的時(shí)候,會(huì )將相應的代碼解析成function表達式,而不是function聲明。
// 下面2個(gè)括弧()都會(huì )立即執行
(function () { /* code */ } ()); // 推薦使用這個(gè)
(function () { /* code */ })(); // 但是這個(gè)也是可以用的
// 由于括弧()和JS的&&,異或,逗號等操作符是在函數表達式和函數聲明上消除歧義的
// 所以一旦解析器知道其中一個(gè)已經(jīng)是表達式了,其它的也都默認為表達式了
var i = function () { return 10; } ();
true && function () { /* code */ } ();
0, function () { /* code */ } ();
// 如果你不在意返回值,或者不怕難以閱讀
// 你甚至可以在function前面加一元操作符號
!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();
srand(time(NULL)):這是兩個(gè)函數,一個(gè)是srand函數,這是在調用rand()這個(gè)函數之前使用的,rand()是一個(gè)產(chǎn)生隨機數的函數,而srand是一個(gè)設置隨機數種子的函數,通常這兩個(gè)函數是一起使用的,來(lái)完成產(chǎn)生隨機數的功能。
而time(NULL)這個(gè)函數的返回值是作為srand函數的參數的,意思是以現在的系統時(shí)間作為隨機數的種子來(lái)產(chǎn)生隨機數,至于NULL這個(gè)參數,因為這個(gè)話(huà)就返回到現在時(shí)間時(shí)候的long秒,只有設置成NULL才能獲得系統的時(shí)間。
擴展資料:
計算機并不能產(chǎn)生真正的隨機數,而是已經(jīng)編寫(xiě)好的一些無(wú)規則排列的數字存儲在電腦里,把這些數字劃分為若干相等的N份,并為每份加上一個(gè)編號用srand()函數獲取這個(gè)編號,然后rand()就按順序獲取這些數字,當srand()的參數值固定的時(shí)候,rand()獲得的數也是固定的,所以一般srand的參數用time(NULL),因為系統的時(shí)間一直在變,所以rand()獲得的數,也就一直在變,相當于是隨機數了。只要用戶(hù)或第三方不設置隨機種子,那么在默認情況下隨機種子來(lái)自系統時(shí)鐘。
如果想在一個(gè)程序中生成隨機數序列,需要至多在生成隨機數之前設置一次隨機種子。 即:只需在主程序開(kāi)始處調用srand((unsigned)time(NULL));后面直接用rand就可以了。不要在for等循環(huán)放置srand((unsigned)time(NULL))。
主要原因是你沒(méi)有把查找范圍固定住。由于公式會(huì )自動(dòng)復制。所以,你前幾項可以查找到,到了后面你就查不到。因為到了后面的話(huà),公式也許會(huì )變成=VLOOKUP(C20,C20:D40000,2,FALSE)等。隨著(zhù)你的鼠標的移動(dòng),公式自動(dòng)跟著(zhù)鼠標所在的單元格的地址在變動(dòng)。解決辦法,把公式的括號里的C3:D9999選中后按F9鍵,會(huì )出現美元的符號($c$3:$d$9999),也就是把C3:D9999這個(gè)范圍固定后,就可以用VLOOKUP實(shí)現你所想查找的目標結果。
是的。這里的變量也包括函數。函數也是一種變量。匿名寫(xiě)法可以避免變量全局污染。
比如。在別人寫(xiě)過(guò)的一段js代碼中你想在里面加一些自己的代碼。最好的做法就是用匿名函數包裹。舉個(gè)例子來(lái)看為什么。
比如,已經(jīng)存在一段別人寫(xiě)的代碼了,假設這段代碼很長(cháng)你不想看。
//別人的代碼
.
.很多
//這里他定義了一個(gè)叫foo的函數
function foo{
一些函數邏輯
}
好,現在你自己想在同一個(gè)頁(yè)面里面加一些自己的代碼。假如你不知道別人已經(jīng)定義了foo函數,你又額外在自己的函數里面定義一次
function foo{
..
}
把這段代碼加在了頁(yè)面的最后。這樣你的函數定義就覆蓋了 原來(lái)別人i寫(xiě)的函數定義。
恰巧,在某個(gè)事件里面,就使用foo函數。這個(gè)時(shí)候,原來(lái)的邏輯就不能正確執行了。
假如你的定義寫(xiě)在匿名函數里面, 那么這個(gè)定義就對外部不可見(jiàn)的,不會(huì )覆蓋原來(lái)的。這樣就避免了變量污染。 實(shí)際的應用,你就去參考 流行js庫的源代碼。通常都是如下寫(xiě)法
;(function(){
var 。.
.
})()
這樣就會(huì )避免變量污染了。
注意,在開(kāi)始的第一個(gè)字符 使用 分號,這是因為避免出現代碼壓縮時(shí)產(chǎn)生意外的錯誤。因為js可以省寫(xiě)分號。假設有段代碼是
.
return result
然后又在js合并壓縮時(shí) 合并成一個(gè)文件
return reslut;(function(){。})()
如果沒(méi)有分號就會(huì )成這樣
.
return reslut(function(){。})()
在代碼進(jìn)行壓縮后result 變成了一個(gè)函數了,這明顯是錯誤的。
因此在匿名函數的前面加個(gè) 分號 也是個(gè)良好的習慣
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:2.695秒