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