當前位置:首頁 » 編程語言 » c語言使用注意事項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言使用注意事項

發布時間: 2022-09-06 22:14:38

⑴ 關於c語言

首先看了一下你的程序,並親自運行了一下;

發現只有main這個單詞錯誤了, 你誤寫成了mian。

正常的程序如下:

intmain()
{
shorta=10;
cout<<"短整型"<<sizeof(a)<<endl;
intb=10;
cout<<"整型"<<sizeof(b)<<endl;
longc=10;
cout<<"長整型"<<sizeof(c)<<endl;
floatd=3.14;
cout<<"單精度整型"<<sizeof(d)<<endl;
doublee=3.1415926;
cout<<"雙精度整型"<<sizeof(e)<<endl;
return0;
}

輸出結果如下:

注意事項以及建議:

1、在編程時, 盡量避免單詞拼寫錯誤。

2、代碼中的標點符號均為英文符號, 不要使用中文符號。

如果以上問題對你有幫助,請採納一下,謝謝。

⑵ C語言函數首部注意事項,求高手幫忙

1.要註明返回值類型,如void,float,int,char等等。如果未寫,則默認為int型。
2.寫上調用的函數名,如temp()
3.括弧內寫上所傳遞的數據類型和用來接收數據的變數。如(float num1,int num2)且數據類型及數量與調用函數時一致。
注意括弧後不要加分號。
4.舉一個例子:如果在main函數中調用函數為int a; float b; scanf(%d%f,&a,&b);temp(a.b);
則函數首部就應當寫為float temp(int x,float y)這里假設返回值為浮點型。

⑶ 求教,c語言學習方法,打代碼注意事項

學習方法,沒什麼多說的,多看書多敲代碼,不僅僅是書中的代碼,也要自己想一些問題來實現

打代碼,初學時要注意以下幾點

  1. 注意變數名,函數名等不要拼錯

  2. 用scanf函數時不要忘記加&,當然,字元串除外

  3. 學會查錯,仔細看編譯器的報錯提示,會包括出錯所在行數和錯誤類型,其中行數很重要,一般提示出錯在10行,那問題就多在10行附近,仔細看看(也有情況會離提示很遠),錯誤類型並不一定是實際的錯誤,不能把這個當做評判標准,另外,程序語法沒有錯誤,不代表程序本身沒錯,一定要注意

  4. 多實驗,會有很多收獲

  5. 可以加一些QQ群問問題,問問題要注意把代碼和報錯提示一起截圖,不要拍照,拍照很不清晰,不要問一些范圍很大的概念性問題

  6. 注意保存好代碼,專門建個文件夾保存,裡面也建文件夾,每個文件夾保存一個項目

  7. 盡量別用手機編程

⑷ c語言的注意事項

在 C 語言中,如果在未知的有符號數上執行位操作,很可能會導致緩沖區溢出,從而在某些情況下導致攻擊者執行任意代碼,同時,還可能會出現出乎意料的行為或編譯器定義的行為。

⑸ C語言程序設計注意事項

#include <reg52.H>
#include<absacc.h>

unsigned char code dispbitcode[]={
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
};
unsigned char code dispcode[]={0xfe,0xfd,0xfb,0xf7 };//,0x99,0x92,0x82,0xF8,0x80,0x90,0x00};
unsigned char dispbuf[4]={0,0,0,0};//八通道數據待存數組
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit LED1=P3^6;
sbit LED2=P3^7;
sbit SPK=P3^5;
bit lowflag;
bit highflag;
unsigned int cnta;
unsigned int cntb;
bit alarmflag;

/***************
主程序
***************/
void main(void)
{
ST=0;//轉換信號啟動
OE=0;//輸出允許信號
TMOD=0x12;//
TH0=216;//
TL0=216;//
TH1=(65536-4000)/256;//
TL1=(65536-4000)%256;
TR1=1;//
TR0=1;
ET0=1;
ET1=1;
EA=1;
ST=1;
ST=0;
/****************************************************
LED燈的指示,低的時候,LED2亮;高的時候LED1滅
否則LED1亮,LED2滅;
否則都亮
****************************************************/
while(1)
{
if((lowflag==1) &&(highflag==0))
{
LED1=0;
LED2=1;
}
else if((highflag==1) && (lowflag==0))
{
LED1=1;
LED2=0;
}
else
{
LED1=1;
LED2=1;
}
}
}

void t0(void) interrupt 1 using 0
{
CLK=~CLK;
}

void t1(void) interrupt 3 using 0
{

TH1=(65536-4000)/256;
TL1=(65536-4000)%256;

if(EOC==1)
{
OE=1;
getdata=P1;//從P0口得到數據
OE=0;
temp=getdata*25;
//temp=getdata*225;
temp=temp/64;
//i=6;
dispbuf[3]=temp/100;
dispbuf[2]=(temp%100)/10;
dispbuf[1]=(temp%10)/1;
dispbuf[0]=temp%1;
/* dispbuf[0]=0;
dispbuf[1]=0;
dispbuf[2]=0;
dispbuf[3]=0;

while(temp/10)
{
dispbuf[i]=temp%10;
temp=temp/10;
i++;
}
dispbuf[i]=temp; */
if(getdata<77)
{
lowflag=1;
highflag=0;
}
else if(getdata>153)
{
lowflag=0;
highflag=1;
}
else
{
lowflag=0;
highflag=0;
}
ST=1;
ST=0;
}

P0=dispbitcode[dispbuf[dispcount]];
P2=dispcode[dispcount];
dispcount++;
if(dispcount==4)
{

dispcount=0;
}

if((lowflag==1) && (highflag==0))
{
cnta++;
if(cnta==800)
{
cnta=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
SPK=~SPK;
}
}
else if((lowflag==0) && (highflag==1))
{
cntb++;
if(cntb==400)
{
cntb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
SPK=~SPK;
}
}
else
{
alarmflag=0;
cnta=0;
cntb=0;
}
}

⑹ 在C語言中條件語句有哪些需要注意的事項

c語言語句分為5


1、
表達式語句
2、
函數調用語句
3、
控制語句
4、
復合語句
5、
空語句

表達式語句

表達式+分號;
函數調用語句

函數名+實際參數+分號;
格式一般為:函數名(參數表);
控制語句


1,條件判斷語句

if語句,switch語句循環執行語句

例如:if(a>b)
max=a;

else
max=b;
//
該語句表示:如果a>b條件成立,則max取a的值,否則max的值是b。在a>b條件的控制下,出現兩個可能的分支流程。而switch語句能實現多個分支流程。


do
while語句,while語句,for語句轉向語句

2,循環語句有for、while和do_while三種。當循環語句的循環控制條件為真時,反復執行指定操作,是c語言中專門用來構造循環結構的語句。

如:for(i=1;i<10;i++)
printf("%d",i);

i從1開始,每次加1,只要i<10就輸出i的值,因此i=1,2,3,……,9,共循環9次,輸出:
1
2
3
4
5
6
7
8
9

上述功能還可以用while語句和do_while語句實現。

用while語句實現:
i=1;
while(i<10)
{
printf("%d",i);i++;
}

用do_while語句實現:
i=1;
do
{
printf("%d",i);i++;
}
while(i<10);

轉移語句有break,continue,return和goto四種。它們都能改變程序原來執行順序並轉移到其它位
置繼續執行。例如,循環語句中break語句終止該循環語句的執行;而循環語句中的continue語句只結束本次循環並開始下次循環;return語句
用來從被調函數返回到主調函數並帶回函數的運算結果;goto語句可以無條件轉向任何指定的位置執行。
復合語句
:多個語句用{}括起來,組成復合語句,其中每條語句都以;結束,但}外不能加分號;
空語句


空語句是只有分號(;)的語句。由一個分號組成,它表示什麼操作也不做。從語法上講,它的確是一條語句。在程序設計中,若某處從語法上需要一條語句,而實際上不需要執行任何操作時就可以使用它。例如,在設計循環結構時,有時用到空語句。
賦值語句
:屬於表達式語句,注意事項如下:
1、
允許嵌套
2、
與為變數賦初值有區別,賦初值是變數說明的一部分,與其他變數要用逗號分隔,而賦值語句需要用分號;結束
3、
變數說明不允許中的賦初值不允許連續賦初值,如int
a=b=c=5;是錯誤的,但賦值語句a=b=c=5是正確的。
4、
注意賦值表達式和賦值語句的區別。賦值表達式是一種表達式,它可以出現在任何允許表達式出現的地方,而賦值語句則不能。

如if
((x=y+5)>0)
z=x;是正確的,而if((x=y+5;)>0)
z=x;是錯誤的。

⑺ c語言中從鍵盤輸入數據的規律和容易出錯的地方

以下為你收集的c語言輸入數據要點及注意事項

說明: (1)數據輸入是相對計算機內存
(2) 數據輸入使用標准庫函數完成
(3) 數據輸入標准庫函數的原型聲明在stdio.h頭文件中
1、函數getchar函數的功能是從鍵盤上輸入一個字元。
其一般形式為:字元變數=getchar();

getchar函數只能接受單個字元,輸入數字也按字元處理。
輸入多餘的字元存入到鍵盤的緩沖區,若有下一個getchar函數語句,直接從鍵盤的緩沖區讀取。
2、字元串輸入函數gets 格式:
gets (st)
功能:從鍵盤上輸入一個字元串,本函數得到一個函數值,即為該字元數組的首地址。
注意:gets函數並不以空格作為字元串輸入結束的標志,而只以回車作為輸入結束。這是與scanf(「%s」,…)函數不同的。
3、scanf()函數的一般形式
scanf(「格式控制字元串」,地址列表);

地址列表,用來接受數據各變數的地址。

變數的地址表示如下: & 變數名 ,別忘了取地址運算&

其格式字元串的一般形式為:
%[*][輸入數據寬度][長度]類型字元
其中有方括弧[]的項為任選項。各項的意義如下:
1) 類型字元
表示輸入數據的類型,其格式符和意義如下所示:
d 輸入十進制整數
o 輸入八進制整數
x 輸入十六進制整數
u 輸入無符號十進制整數
f或e 輸入實型數(用小數形式或指數形式)
c 輸入單個字元
s 輸入字元串

2) 「*」符
用以表示該輸入項讀入後不賦予相應的變數,跳過該輸入值。
如 scanf("%d %*d %d",&a,&b);
輸入為:1 2 3 把1賦予a,2被跳過,3賦予b。
3)寬度
用十進制整數指定輸入的寬度(即字元數)。
例如: scanf("%5d",&a);
輸入: 12345678
只把12345賦予變數a,其餘部分被截去。
又如: scanf("%4d%4d",&a,&b);
輸入:12345678將把1234賦予a,而把5678賦予b。
4)長度 長度格式符為l和h,l表示輸入長整型數據(如%ld)和雙精度浮點數(如%lf)。h表示輸入短整型數據。
例如:
main()
{ inta;
long b;
double x;
scanf(「%d%ld%lf」,&a,&b,&x);
printf(「a=%d, b= %ld,x=%lf」,a,b,x);
}
使用scanf函數還必須注意以下幾點:
(1)scanf函數中沒有精度控制。
如:scanf(「%5.2f」,&a); 是非法的。
(2)scanf中要求給出變數地址,
如: scanf(「%d」,a);是非法的。
(3)在輸入多個數值數據時,若格式控制串中沒有非格式字元作輸入數據之間的間隔則可用空格,TAB或回車作間隔。
例如:scanf(「%d%d」,&a,&b);
輸入: 12 10 回車
或 12 回車 10 回車
(4)在輸入字元數據時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。
例如:
scanf("%c%c%c",&a,&b,&c);
輸入為:d e f 則把'd'賦予a, 『』'賦予b,'e'賦予c。
只有當輸入為: def時,把'd'賦於a,'e'賦予b,'f'賦予c。
如果在格式控制中加入空格作為間隔,
如 scanf ("%c %c %c",&a,&b,&c);
輸入時各數據之間可加空格。
(5)如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。
例如:
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符「,」作間隔符,故輸入時應為: 5,6,7
又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
則輸入應為: a=5,b=6,c=7
(6)如輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果可能不正確。
void main()
{ inta;
printf("inputa number\n");
scanf("%d",&a);
printf("%ld",a);
}
以上總結比較全面,希望能幫到你。

⑻ c語言中,函數調用應該注意哪些問題

如果一個函數要使用參數,它就必須定義接受參數值的變數。
形式參數與實際參數

函數定義時填入的參數我們稱之為形式參數,簡稱形參,它們同函數內部的局部變數作用相同。形參的定義是在函數名之後和函數開始的花括弧之前。
調用時填入的參數,我們稱之為實際參數,簡稱實參。

必須確認所定義的形參與調用函數的實際參數類型一致,同時還要保證在調用時形參與實參的個數出現的次序也要一一對應。如果不一致,將產生意料不到的結果。與許多其它高級語言不同,(是健壯的,它總要做一些甚至你不希望的事情,幾乎沒有運行時錯誤檢查,完

全沒有范圍檢測。作為程序員,必須小心行事以保證不發生錯誤,安全運行。
賦值調用與引用調用

一般說來,有兩種方法可以把參數傳遞給函數。第一種叫做「賦值調用」(call
by
value),這種方法是把參數的值復制到函數的形式參數中。這樣,函數中的形式參數的任何變化不會影響到調用時所使用的變數。

把參數傳遞給函數的第二種方法是「引用調用」(call
by
reference)。這種方法是把參數的地址復制給形式參數,在函數中,這個地址用來訪問調用中所使用的實際參數。這意味著,形式參數的變化會影響調用時所使用的那個變數

⑼ c語言中字元數據輸入時的注意事項

這個取決於輸入函數的格式,如scanf函數有%s和%c,前者將輸入中的空格,Tab鍵和回車作為輸入結束的標記,即其後的字元將被忽略

⑽ C語言類型強制轉換的注意事項

1.類型說明符和表達式都必須加括弧(單個變數可以不加括弧),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。
2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行的臨時性轉換,而不改變數據說明時對該變數定義的類型。
例1:
main()
{
float f=5.75;
printf(f=%d,f=%f ,(int)f,f);
}
f=5,f=5.750000
將float f強制轉換成int f float f=5.75;printf((int)f=%d,f=%f ,(int)f,f); 本例表明,f雖強制轉為int型,但只在運算中起作用, 是臨時的,而f本身的類型並不改變。因此,(int)f的值為 5(刪去了小數)而f的值仍為5.75。
例2:
比如我們可以(int)'A',這樣轉換後的結果為A的ASCII碼數值,因為那塊內存本來就存的那個數,只是換個形式使用而已。 知道上面的原則,我們可以對任何數據類型進行轉換,但是轉換的結果可能不是你想像的結果,舉例(int)'9'的結果為多少?不是9而是0x39。來個高深點的printf(%d,『12』);的輸出是什麼?正確答案是12594,因為printf(%d,'12'),列印的是存儲12的內存地址上的內容,即ASCII碼值2存儲在低位,1儲在高位地址,0x32就是2的ASCII碼,0x31就是1的ASCII碼,所以是0x3132,轉換成10進制就是12594!
● 字元型變數的值實質上是一個8位的整數值,因此取值范圍一般是-128~127,char型變數也可以加修飾符unsigned,則unsigned char 型變數的取值范圍是0~255(有些機器把char型當做unsighed char型對待, 取值范圍總是0~255)。
● 如果一個運算符兩邊的運算數類型不同,先要將其轉換為相同的類型,即較低類型轉換為較高類型,然後再參加運算,轉換規則如下圖所示。
double ←── float 高

long

unsigned

int ←── char,short 低
● 圖中橫向箭頭表示必須的轉換,如兩個float型數參加運算,雖然它們類型相同,但仍要先轉成double型再進行運算,結果亦為double型。 縱向箭頭表示當運算符兩邊的運算數為不同類型時的轉換,如一個long 型數據與一個int型數據一起運算,需要先將int型數據轉換為long型, 然後兩者再進行運算,結果為long型。所有這些轉換都是由系統自動進行的, 使用時你只需從中了解結果的類型即可。這些轉換可以說是自動的,當然,C語言也提供了以顯式的形式強制轉換類型的機制。
● 當較低類型的數據轉換為較高類型時,一般只是形式上有所改變, 而不影響數據的實質內容, 而較高類型的數據轉換為較低類型時則可能有些數據丟失。
賦值中的類型轉換
當賦值運算符兩邊的運算對象類型不同時,將要發生類型轉換, 轉換的規則是:把賦值運算符右側表達式的類型轉換為左側變數的類型。具體的轉換如下:
(1) 浮點型與整型
● 將浮點數(單雙精度)轉換為整數時,將舍棄浮點數的小數部分, 只保留整數部分。將整型值賦給浮點型變數,數值不變,只將形式改為浮點形式, 即小數點後帶若干個0。注意:賦值時的類型轉換實際上是強制的。
(2) 單、雙精度浮點型
● 由於C語言中的浮點值總是用雙精度表示的,所以float 型數據只是在尾部加0延長為double型數據參加運算,然後直接賦值。double型數據轉換為float型時,通過截尾數來實現,截斷前要進行四捨五入操作。
(3) char型與int型
● int型數值賦給char型變數時,只保留其最低8位,高位部分舍棄。
● char型數值賦給int型變數時, 一些編譯程序不管其值大小都作正數處理,而另一些編譯程序在轉換時,若char型數據值大於127,就作為負數處理。對於使用者來講,如果原來char型數據取正值,轉換後仍為正值;如果原來char型值可正可負,則轉換後也仍然保持原值, 只是數據的內部表示形式有所不同。
(4) int型與long型
● long型數據賦給int型變數時,將低16位值送給int型變數,而將高16 位截斷舍棄。(這里假定int型占兩個位元組)。 將int型數據送給long型變數時,其外部值保持不變,而內部形式有所改變。
(5) 無符號整數
● 將一個unsigned型數據賦給一個占據同樣長度存儲單元的整型變數時(如:unsigned→int、unsigned long→long,unsigned short→short) ,原值照賦,內部的存儲方式不變,但外部值卻可能改變。
● 將一個非unsigned整型數據賦給長度相同的unsigned型變數時, 內部存儲形式不變,但外部表示時總是無符號的。
/*例:賦值運算符舉例 */
main()
{
unsigned a,b;
int i,j;
a=65535;
i=-1;
j=a;
b=i;
printf((unsigned)%u→(int)%d ,a,j);printf((int)%d→(unsigned)%u ,i,b);
}
運行結果為:(unsigned)65535→(int)-1(int)-1→(unsigned)65535
● 計算機中數據用補碼表示,int型量最高位是符號位,為1時表示負值,為0時表示正值。如果一個無符號數的值小於32768則最高位為0,賦給 int型變數後、得到正值。如果無符號數大於等於32768,則最高位為1, 賦給整型變數後就得到一個負整數值。反之,當一個負整數賦給unsigned 型變數時,得到的無符號值是一個大於32768的值。
● C語言這種賦值時的類型轉換形式可能會使人感到不精密和不嚴格,因為不管表達式的值怎樣,系統都自動將其轉為賦值運算符左部變數的類型。
● 而轉變後數據可能有所不同,在不加註意時就可能帶來錯誤。 這確實是個缺點,也遭到許多人們批評。但不應忘記的是:c語言最初是為了替代匯編語言而設計的,所以類型變換比較隨意。當然, 用強制類型轉換是一個好習慣,這樣,至少從程序上可以看出想干什麼。