当前位置:首页 » 编程语言 » 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语言最初是为了替代汇编语言而设计的,所以类型变换比较随意。当然, 用强制类型转换是一个好习惯,这样,至少从程序上可以看出想干什么。