c语言的函数类型转换
‘壹’ c语言数据类型如何转换
C语言算术表达式的计算,在计算过程中,每一步计算所得结果的数据类型由参与运算的运算对象决定,相同数据类型的两个对象运算,结果数据类型不变,不同数据类型的运算对象进行运算,结果的数据类型由高精度的运算对象决定。精度的高低:double>float>int
需要注意的是,数据类型的转换是在计算过程中逐步进行的,整个表达式结果的数据类型一定与表达式中出现的精度最高的数据相同,但是具体得到数据值是逐步得到的,例如:int
x=1,y=3;
double
k=1573.267;
x
/
y
*
k
这个表达式计算结果的数据类型是double,
计算结果的答案是
0.0
因为在第一步
x/y
的计算中
结果是一个整型数据
0
第二步计算
0
*
1573.267
结果是一个double类型的数据,但数值是0.0
也就是说,算术表达式计算结果的数据类型与运算的优先级没有关系,一定具有表达式中精度最高的数据类型,但是具体得到数据结果数值,与优先级可就有关系啦。
‘贰’ c语言类型转换分为那两种
c语言函数从形式上分为这么两种:一种是用户自定义函数,就是你自己根据功能的需要自己编写的函数;另一种是系统自带的函数,如sqrt(x)函数
(就是求x的二次方根),这样的可以直接用,不用自己编写,前提是你得在头文件中把它们包含进去;
‘叁’ C语言中数据类型转换的方式有几种
C语言中数据类型转换的方式有两种:自动类型转换,由C编译系统自动完成。还有一种是“强制类型转换”由程序员在代码中明文写清楚。
‘肆’ c语言强制类型转换
1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;这就是一种强制转变方法。
‘伍’ 关于c语言中的类型转换,谢谢了啊!!!
main() /*No.1主函数*/
{
printf("Welcome to study C program.\n");
printf("This is Lesson One.\n");
}
程序写好后,按“F9”,然后按"Alt-F-O",就进入DOS提示符下
去执行它。
Welcome to study C program.
This is Lesson One.
怎么样?你自己的程序也变成了*.exe型的可执行文件了。按
“EXIT”可以返回到系统。
上例中“main()”是程序的主函数。C 语言程序由一系列函数组
成,而且每个程序必须有且只有一个主函数,即“main()”。在第一
行末还有/* */所夹的内容,它在程序编译时不参与编译,只说明程
序的作用,即起注释作用。所以在你抄本教程的例子时可不抄这一部
分内容。
每个函数必须由“{ }”括起来,每句程序必须用“;”结束。
第3行第4行中printf是C语言用来在屏幕上输出信息的一个重要
函数,最简单的格式是
printf("显示的内容");
字符串后面的“\n”不会显示在屏幕上,它的意思是“回车换行”
接下来,你把第3行后面的“\n”去掉,再按“F9”后去执行,
你就会发现两行内容都印在了一行。
Welcome to study C program.This is Lesson One.
如果在“\n”后加上“\a”,即每显示一行出现一次响铃。
如下表,是“\”后面字符的特殊含义。
\r
回车不换行(到行首)
\t
横向跳到下一输出位
\b
向左退格
\\
输出字符"\"
好。下面把程序中“printf("This is Lesson One.\n");”
换成“printf("\tThis is Lesson One.\n");”,执行一下程序。
Welcome to study C program.
This is Lesson One.
下面再换成“printf("This is \b\bLesson One.\n");”再执行
一下。
Welcome to study C program.
This iLesson One.
程序中的“s ”并不是没有显示,而是显示后,又被“Le”给盖
上了。
要想在屏幕上输出一个“C:\>”则要写上“printf("C:\\>");”
好了,第一节就要此为止。你赶快复习一个。你知道今天所学的
知识了吗?(只要学会了这些就别再多学了,贪多吃不烂。)
1.printf("显示信息") 最简单的输出格式
2.“{ }” 用来括起函数
“;” 每句程序的结束标志
3.“\t”“\n”“\b”“\a”是什么意思?
4.主程序的标志是什么?
5./* */ 是用来注释程序
不过先别关机,如果你用的是UCDOS或是成然汉字,你可以把显
示的信息用中文代替。如:printf("我一定要把C语言学会!\n");
您的当前位置是:首页>>电脑知识>>文本方式下的显示
--------------------------------------------------------------------------------
文本方式下的显示
C语言中,图形函数大致可分为两类:字符模式函数和图形模式函数。本节我们练习使用字符模式函数。
使用字符模式函数应该在程序中联入conio.h头部文件。
下面是一些函数的作用
1) void clreol(); 从光标处删除到本行末
2) void delline(); 清除本行内容,下面内容上提一行
delline();函数实际上还起到了向上卷屏的作用。
3) void insline(); 在光标所在行插入一空行,原来该行及以
下各行皆向下移一行
4) int wherex(); 返回当前光标的x(行)坐标
5) int wherey(); 返回当前光标的y(列)坐标
6) void highvideo(); 字符输出用高亮度字符
7) void lowvideo(); 字符输出用低亮度字符
8) void normvideo(); 字符输出用普通亮度字符
在以上的各函数中皆不带参数,当然也可以写成括号中有void的形式:
void wherex(void); 还可以写成 wherex();
清屏、清行、向后删行、插行的操作真有些CCED、WPS等编辑软件的风格,就是在你平时的屏幕设计中也用少不了。返回坐标的函数则给你的设计提供每一个环节的光标坐标值。有利于你前后响应。字
符亮度的改变则会让你的字符显示出层次感,怎么样,赶快试试吧:
/* No32.c*/
# include "stdio.h"
# include "conio.h"
main()
{ clrscr();
gotoxy(10,1);
cprintf("甜密密,");
highvideo(); /*高亮度显示*/
cprintf("\r\n 你笑得甜密密,");
lowvideo(); /*低亮度显示*/
cprintf("\r\n 好象花儿开在春风里,");
normvideo(); /*普通亮度显示*/
gotoxy(10,4); cprintf("开在春风里");
cprintf("\r\n 在哪里,在哪里见过你?");
printf("\r\n 你的笑容这样熟悉。");
gotoxy(10,20);printf("任意键删去光标后的内容");
gotoxy(18,3); getch();
gotoxy(18,3);
clreol(); /*删去光标后字符*/
gotoxy(10,20);printf("任意键删去本行的内容 ");
gotoxy(18,3); getch();
delline(); /*删去本行*/
gotoxy(10,20);printf("任意键在本行插一空行 ");
gotoxy(18,3); getch();
insline(); /*插入一空行*/
gotoxy(1,7);
}
应该注意的是,要发挥本节所讲的函数的作用,在显示时不能使printf函数,应使用cprintf函数。它的使用方法和printf的完全一样,只不过后面的cprintf能发挥亮度设置和颜色设置的作用。前者
printf函数只有一种颜色和单一的亮度。
在cprintf函数中,“\n”的作用不再是既回到行首又换行,它只起一个换行的作用,所以要把内容在行首显示必须再加一个“\r”
上面的程序不是一真正对大家有用的程序,只是用来说明一个刚刚学到的几个函数的作用。在conio.h中还有一些字符型函数,它们都是带参数的。
9) void textcolor(颜色); 定义显示字符颜色
10) void textbackground(颜色); 定义背景颜色
下面是颜色数字和颜色对照表
BLACK 0 黑 DARKGRAY 8 深灰
BLUE 1 兰 LIGHTBLUE 9 淡兰
GREEN 2 绿 LIGHTGREEN 10 淡绿
CYAN 3 青 LIGHTCYAN 11 淡青
RED 4 红 LIGHTRED 12 淡红
MAGENTA 5 洋红 LIGHTMAGENTA 13 淡洋红
BROWN 6 棕 YELLOW 14 黄
LIGHTGRAY 7 淡灰 WHILT 15 白
背景颜色值只能是0-7共8个数字或其对应的英文大写单词。而前景(即字符)的颜色可以是0-15共16种颜色或其对应的英文大写单词。当你定义的前景和背景相同时,屏幕上看不到输出的内容。
textcolor(4); 和 textcolor(RED); 效果是相同的。
设置屏幕颜色还可以使用
11) void textattr(前景颜色+(背景颜色));
但这里的背景颜色要有“<<4”。如白底红字,就是:
textattr(RED+(WHITE<<4));
12) int gettext(左上角x,左上角y,右下角x,右下角y,内存指针);
把定义的长方形区域内的内容存在内存中
13) int puttext(左上角x,左上角y,右下角x,右下角y,内存指针);
把内存中存好的内容显示在新定义的矩形块内
这里的内存指针也可用字符形数组来代替。需要注意的是内存大小应该是所存内容的“行数*列数*2”。比如把第3行第5列到第6行第75列的数据存到内存中,可以用下面的片段:
char buffer[4*70*2];
gettext(5,3,75,6,buffer);
然后你就可以用puttext函数来显示它了。
14) void movetext(左上角x,左上角y,右下角x,右下角y,
新左上角x,新左上角y);
把矩形块移到新左上角(x,y)决定的地方
15) void window(左上角x,左上角y,右下角x,右下角y);
定义一个窗口,大小就是上面参数决定的长方形
利用这一函数,你可以在屏幕上任何一个地方开辟一个窗口,并在上面显示需要的内容。这丝毫不影响屏幕其它地方的内容。当你定义了窗口后,你只能操作该窗口,gotoxy(),wherex(),wherey(),
clrscr()等等函数所表示的都是你定义窗口中的情况。实际上这就为我们的操作带来了方便,你想操作哪儿,就定义哪儿,想回到平时状态的屏幕,就定义一个最大的窗口,window(1,1,80,25);就复原了。
No.33号例子是利用puttext和gettext函数以及颜色定义来模仿CCED和WPS的菜单显示。但这个小程序没有可移动的光条,也没有菜单中内容的相应执行程序,只是演示一下屏幕的保存和释放而已。
/* No33.c */
#include "conio.h"
#include "stdio.h"
main()
{ int i=1,j,ch;
char buffer[6*50*2]; /*开辟内存空间的大小*/
clrscr();
textcolor(0); /*定义字符颜色*/
textbackground(7); /*定义背景颜色*/
gotoxy(1,1);
cprintf(" 功能1 功能2 功能3 ");
textbackground(0);
textcolor(14);
gotoxy(1,2);
cprintf("What's your name? 你叫什么名字");
cprintf("\n\rMy name is Wang Dong. 我叫王东.");
cprintf("\n\rHow old are are you? 你多大了 . ");
cprintf("\n\rI'm thirty-four. 我四十四了");
cprintf("\n\r\n\rThis is Lesson One. 这是第一课");
while(1)
{ j=i;
textcolor(0);
textbackground(7);
if(i==1)
{ gettext(1,2,13,5,buffer);
gotoxy(2,2); cprintf("│第一课│");
gotoxy(2,3); cprintf("│第二课│");
gotoxy(2,4); cprintf("│第三课│");
gotoxy(2,5); cprintf("└———┘");
}
if(i==2)
{ gettext(13,2,25,5,buffer);
gotoxy(14,2); cprintf("│菜单一│");
gotoxy(14,3); cprintf("│菜单二│");
gotoxy(14,4); cprintf("│菜单三│");
gotoxy(14,5); cprintf("└———┘");
}
if(i==3)
{ gettext(25,2,37,5,buffer);
gotoxy(26,2); cprintf("│说明A │");
gotoxy(26,3); cprintf("│说明B │");
gotoxy(26,4); cprintf("│说明C │");
gotoxy(26,5); cprintf("└———┘");
}
textcolor(14);
gotoxy(10,20);printf("→向右移动 ←向左移动 Esc 退出");
ch=getch();
if((ch==75)&&(i==1)) /*菜单个数的判断*/
{ i=3; ch=0;}
if((ch==77)&&(i==3)) /*ASCII码 77是右箭头*/
{ i=1; ch=0;}
if((ch==75)&&(i>1)) /*ASCII码 75是左箭头*/
i--;
if((ch==77)&&(i<3))
i++;
if(ch==27)
break;
puttext(j*12-11,2,j*12+1,5,buffer);
}
}
您的当前位置是:首页>>电脑知识>>基本输入输出
--------------------------------------------------------------------------------
基本输入输出
基本输入输出函数
下面要进行的工作是编个程序,你输入什么,它就显示什么。程序如No.2所示。
main() /* No.2 */
{
char ch[12]; /*定义一个字符串*/
int i; /*定义一个整(数)型变量*/
printf("请输入一个字符串:"); /*显示提示信息*/
scanf("%s",ch); /*用输入函数输入字符串*/
printf("请输入一个整数:");
scanf("%d",&i); /*输入一个整数*/
printf("输入的字符串是:%s 输入的数字是%d",ch,i);
}
如果你输入的字符串是“中华人民共和国”,数字是2000,那么编译成EXE文件后执行
请输入一个字符串:中华人民共和国
请输入一个整数:2000
输入的字符串是:中华人民共和国 输入的数字是2000
怎么样?比No.1程序要好一些吧,想显示什么就显示什么。你还
可以显示代数式的结果:如把第8行最末尾的数据“i”换成“i*10”
printf("输入的字符串是:%s 输入的数字是%d",ch,i*10);
运行程序时,输出如下:
请输入一个字符串:中华人民共和国
请输入一个整数:2000
输入的字符串是:中华人民共和国 输入的数字是20000
本程序注释较多,这样就增加了程序的可读性。通过此程序我们应学习哪些知识呢?
第3行和第4行是对数据进行定义,任何一个变量在C 语言中必须先定义才能使用。
第5行和第7行的scanf()是输入函数,用来输入用户信息。其格式是:
scanf("数据格式说明",数据列表);
之所以是“数据列表”,就是说这里的数据,既可以是一个,也可以是多个,既可以是相同格式的数据,也可以是不同格式的数据。
scanf("%s%d",ch,&i);
它说明的含义是让用户输入一个字符串再输入一个整数,中间用空格分开。
在格式说明中“%s”“%d”是什么意思呢?“%s”说明输入的是 字符串,“%d”说明输入的是整数
注意:C语言中,整数叫“整型数据”。其它格式如下表所示 %d
十进制整数
%o
八进制整数
%x
十六进制整数
%f
小数或指数形式数据
%c
输入单个字符
上表格式说明也同样适用于printf()函数。如第8行就是一例。需要注意的是,在输入数字或单个字符时,数据列表必须用取地址符号,即“&”,而在输出时则不用。
下面再看一看No.3号程序
main() /*No.3*/
{ int a=5,b=10,c,d;
c=200;
d=a*(b+c);
printf("a*(b+c)=%d",d);
}
在这个小程序里,我们计算了一个小代数式的值,然后输出了它的值。需要说明的是,第二行中,在定义变量时可以赋初值。也可以象第三行那样,在定义后再赋初值。
在C语言中,除了整数外,还有无符号整数、实数(浮点数)、长整数、双清度实数。
在C语言中,整数并不是可以无限大,它的大小是有一定限度的,超过了这个限制,程序就会出错。大小规定如下表所示:
数据类型
存储位(bit)
数值范围
整型 int
16
-32768—32767
无符号整数unsigned
16
0—65535
实数 float
32
10E38—10E38
长整型 long int
32
-2147483648—2147483647
双精度实数 double
64
10E-308—10E308
我们下面练习一个No.4号程序
main() /* No.4 */
{ int a=1000,b=2500,i1;
long c=1000,b=2500,i2;
i1=a*b;
i2=c*d;
printf("整型数据1000*2500的积是%d\n",i1);
printf("长整型数据1000*2500的积是%ld\n",i2);
}
执行程序,屏幕输出:
整型数据1000*2500的积是9632
长整型数据1000*2500的积是2500000
上例中,因为整型数据超出了32767的限制,所以出错。如果计
算结果超过32767,在设计时就应该定义成长整型数据。
今天学习的内容太多了,下面的内容你会多少?
1.输入函数scanf()和输出函数printf()的格式是怎样的?
2.scanf()在输入字符串时和输入数字时有什么区别?
3.输入输出时“%s %d %o %x %c %f”表示什么意思?
4.你能大致了角数字数据类型和最大值最小值吗?
头关机以前,你能否再看一眼No.2、No.3、No.4三个程序
您的当前位置是:首页>>电脑知识>>定位输出
--------------------------------------------------------------------------------
定位输出
在系统程序中,显示内容是方便的,任何一个位置都可以显示,
那么,我们怎样随意显示输出内容呢?在C语言中,光标定位用:
gotoxy(列坐标,行坐标);
下面的No.5例子就是它的具体应用:
/* No5.c*/
#include "stdio.h" /*连入头部文件stdio.h*/
main()
{
char ch; int i;
gotoxy(10,4); /*把光标定位在(10,4)坐标处*/
printf("输入一个字符,它便以大写的形式输出 ");
ch=getchar(); /*用getchar()函数输入一个字符*/
if ((ch>='a') && (ch<='z'))
ch=ch-32;
gotoxy(10,7);
printf("输入一个整数,便把它大1和小1的数输出 ");
scanf("%d",&i);
gotoxy(15,13); printf("你输入的字符大写为%c",ch);
gotoxy(15,14);
printf("你输入的%d两侧的数分别为%d,%d",i,i-1,i+1);
}
第1行是在编译时把stdio.h连入程序文件。具体作用见No.6解释
在上程序的第4行中,两类数据定义占了一行,这是允许的。C语
言程序写法是很随便的,它可以一行一句,也可以一行写多句,上例
的第13行也是这样书写的。不过一般情况下我们不这样写。为了程序
在检查和阅读时方便,我们一般一行写一句,而且程序中一个层次的
内容和另一个层次的内容使用缩格排版格式。如上程序的main()函数
上例中的if()语句等。以后程序中层次越多,越应该形成这样的好习
惯。
如果你输入的字符是m,数字是11,则屏幕输出如下:
输入一个字符,它便以大写的形式输入 m
输入一个整数,便把它大1和小1的数输出 11
你输入的字符大写为M
你输入的11两侧的数分别为10,12
在No.5程序中出现了一个新的函数,它是字符输入函数,它的作用是只输入一个字符。
除了它,还有两个字符输入函数,如右表
getchar()
字符显示,回车键结束
getche()
字符显示,不必按回车
getch()
字符不显示,不必按回车
上述三个字符输入函数使用时没有参数,即()中没有内容。
在C语言中,字符也有大小,它按ASCII表中的值排列大小。可以
进行字符间及字符与数字间的运算。如上例的“ch=ch-32;”。比较
字符大小时,可用字符直接比较,如上例的第7行那样;也可以用数
值进行比较,上第7行可改为:
if ((ch>=97) && (ch<=122))
上一行是程序中的条件语句,它的简单格式是
if(条件表达式)
{ 内容1;}
else
{ 内容2;}
如果条件表达式成立,执行内容1,不成立则执行内容2。else语
句可有可无。当执行内容只有一行时,可以省略内容两侧的“{ }”
上述程序的执行内容就没有“{ }”
在上例的“if ((ch>='a') &&(ch<='z'))”中“&&”是逻辑运
算符,逻辑运算符如下表所示
&&
逻辑与
||
逻辑或
!
逻辑非
任何时候,学习都是为了应用。下面我们编写一个电子表程序:
/* No6.c */
# include "stdio.h" /*连入头部文件stdio.h*/
# include "dos.h" /*连入头部文件dos.h*/
main()
{ struct time t; /*定义时间变量 t */
struct date d; /*定义日期变量 d */
clrscr(); /*清屏*/
getdate(&d); /*获取当前日期*/
gotoxy(33,4);
printf("%d.%d.%d",d.da_year,d.da_mon,d.da_day);
while(!kbhit()) /*如果没有按键,则执行下面内容*/
{ gotoxy(34,6);
gettime(&t); /*获取当前时间*/
printf("%d:%d:%d",t.ti_hour,t.ti_min,t.ti_sec);
}
}
C语言程序特别灵活,它可以把别的程序或文件中的内容,连入
到你的程序中,在C语言中已经有许多我们用到的内容放在了头部文
件中,本例中就是利用了"dos.h"头部文件中的时间和日期的定义。
这种连入,既可以是C语言内部的头部文件(*.h),也可以是你自已
写的文件。你自己被连入的文件既可以是“*.h”文件,也可以是
“*.c”文件。文件连入写法有两种:
#include "dos.h" 用这种写法 dos.h 文件放在当前目录中
#include <dos.h> 用这种写法 dos.h 文件放在TC\INCLUDE目
录中。
第6行中“clrscr();”是清屏函数,它不带参数,作用:清屏
第11行的“kbhit()”函数是用来检测用户是否按了键,但它不
能测试出你按的什么键。要知道按的是什么,必须和输入函数配合使
用。
第11行有“while(!kbhit())”是个循环语句,它的意思是:只
要没有按键,程序便执行{...}所括的内容。
本节内容提纲如下:
1.光标定位:gotoxy(列从标,行坐标);
2.getchar()、getcha()、getch()三个字符输入函数输入时情况
是不同的,一个是光标是否回显,一个是是否用回车结束
3.if(...) 如果...便执行{...}中的内容
4. &&逻辑与,||逻辑或,!逻辑非
5.#include "..." 把...文件和主程序连在一起编译
6.kbhit()测试按键是否按
您的当前位置是:首页>>电脑知识>>使用文件
--------------------------------------------------------------------------------
使用文件
到此为止,我们仍停留在屏上,一些需要的东西还不能做为资料保存。要想把你看到的保留下来,就得把资料存储在磁盘文件中,本节我们用两个例子来学习使用文件。
No.7程序是模仿DOS命令中的程序。
/* No7.c */
#include "stdio.h" /*连入stdio.h*/
main(int argc,char *argv[]) /*带参数的程序(带命令行参数)*/
{
char ch;
FILE *in,*out; /*定义文件指针*/
if(argc!=3) /*如果命令行数目不等于3*/
{ printf("格式应该是: No7 源文件名 目标文件名\n");
exit(1); } /*退出程序*/
if((in=fopen(argv[1],"r"))==NULL) /*打开源文件*/
{ printf("文件不存在或磁盘没准备好!\n");
exit(1); }
if((out=fopen(argv[2],"w"))==NULL)
{ printf("文件复制失败!\n");
exit(1); }
while((ch=fgetc(in))!=EOF) /*如果读出的数据不是结尾标志*/
fputc(ch,out); /*把读出的数据写到目标文件中*/
fclose(in); /*关闭文件*/
fclose(out);
printf(" 1 个文件复制成功 \n");
}
上述程序的主程序是带参数的,argc表示命令行的元素个数,argv[],用来接收程序所带的参数。这些参数的接收都是在执行程序时自动完成的。如用上例程序把名为“HEBEI”文件,复制到名为“BEIFEN”的文件,命令行应执行:
no7 hebei beifen
执行后,argc值为3,argv[1]成为“hebei”,argv[2]赋值为“beifen”。
上例中“exit(1);”表示退出程序的执行,返回到DOS提示符。
文件打开格式用
文件指针=fopen(文件名,"打开方式");
if((in=fopen(argv[1],"r"))==NULL) 意思是“如果文件打开失败”,则... ...
打开方式中“r”是打开文件后,只能从文件中读取信息。“w”是打开文件后,只能从文件中写信息。下面是打开方式及功能列表
r
打开一个文本文件读
rb
打开一个二进制文件读
w
打开一个文本文件写
wb
打开一个二进制文件写
a
打开一个文本文件添加
ab
打开一个二进制文件添加
r+
打开一个文本文件读写
r+b
打开一个二进制文件读写
w+
生成一个文本文件读写
w+b
生成一个二进制文件读写
a+
打开或生成文本文件读写
a+b
打开或生成二进制文件读写
“fclose(文件指针);”用来关闭已打开的文件。 如上面的
fclose(in); fclose(out); 就是应用。
fgetc(文件指针); 从文件中读取一个字符。
fputc(字符,文件指针); 把字符写到文件中去。
EOF是文件结束标志。
下面我们编个简易的文本文件阅读器,它相当于DOS中的“type 文件名 | more”,也就是分页显示文本文件。
/*No8.c*/
#include "stdio.h"
main(int argc,char *argv[])
{
FILE *fp;
int i=1;
char ch;
if(argc<2) /*如果命令行参数少于两个*/
{ printf("正确使用方法是: no8 文本文件名");
exit(1);} /*退出*/
if((fp=fopen(argv[1],"r"))==NULL) /*如果文件打开失败*/
{ printf("%s 不存在",argv[1]);
exit(1);}
else
{ clrscr(); /*清屏*/
while((ch=fgetc(fp))!=EOF) /*读取文件中的字符*/
{ printf("%c",ch); /*显示读出的字符*/
if(ch=='\n') /*如果读出的字符是回车*/
i++;
if(i>=23) /*如果行数到24行*/
{ printf("Any key to continue......\n");
i=1;
getch(); /*输入任一个字符*/
}
}
}
fclose(fp);
}
本例中没有什么更难理解的。需要提醒大家的是:在程序中你打开一个文件后,别忘了在结束程序之前,一定要把打开的文件关闭。
在上述程序中,使用了条件语句中的else语句。在使用else语句时,如果语句不
‘陆’ C语言 函数调用 类型转换
char s[]="I am a teacher!"; s是数组名,是首地址, 而s[0]是第一个元素值,是个字符!
‘柒’ C语言中,数据类型的隐式转换与显式转换分别是个什么意思
显式转换,就是强制转换。在被转换的表达式前加(类型),比如:(float)5,就是把5显式转换成float类型。
隐式转换,就是不需要加强制转换,系统会自动做这个操作,比如:
double k;
k=10;
10是int型,不需要显式转换,系统自动会把它转为10.0。
(7)c语言的函数类型转换扩展阅读:
隐式自动类型转换:
C++语言编译系统提供的内部数据类型的隐式自动转换规则如下:
1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等;
2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;
3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;
4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回。
‘捌’ c语言 所有类型转换函数
在赋值表达式中,当左右两边数据类型不同时,右边的数据类型应变为左值(变量)的数据类型,同时编译器也能自动进行类型转换,将低字节数据类型转换为高字节类型,例如:int转换为long
int,当不同的数据类型相互赋值时还有精度缺失问题,例如:将int赋给char,只是将低八位(一个字节)赋给它,希望可以帮到你!
‘玖’ C语言强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。
例如,如果想存储一个long类型的值到一个简单的整型中,需要把long类型强制转换为int类型。可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型。
发生在同一个编译系统中,比如说把int转化为longint,在VC++6.0里面,longint和int都是4个字节,不会有问题的,但是如果把int类型转化为short类型那就装不下了,简而言之就是长类型不能转化为短类型。
int类型如果要转化为float、double、longdouble类型的时候只是末尾多了几个0,但是反之转化,就会出现数据的损失,小数部位都被省略掉了。
赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。
由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。
以上内容参考:网络-C语言类型强制转换
‘拾’ C语言数据类型的转换!!规则是什么!
不是有强制类型转换吗?
强制类型转换 强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
1、显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type()
或
(type)
其中,type为类型描述符,如int,float等。为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
2、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.88
1,若已知x,y为double类型,则表达式:x=1,y=x+3/2结果是多少啊?
因为x,y都是double型,所以执行了y=x+3/2这个语句后,会输出小树部分,double型默认的是小数点后几位我忘了,你自己调试下,就会明白了!