c#与c语言的区别•医学信息工程系•2012级•1211740129•党力特点•c#:c#是一种简单、灵活且功能强大的程序设计语言,采用了面向对象程序设计思想,适合普通应用程序和大型商业软件。•c:c语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既用于编写应用软件,又用于编写系统软件。数据类型•C#:结构类型布尔类型值类型:浮点类型简单类型整数类型小数类型字符类型枚举类型数据类型引用类型:类类型数组类型接口类型委托类型•c:基本整型短整型整型类型长整型双长整型字符型基本类型布尔型单精度浮点型浮点类型双精度浮点型复数浮点型数据类型枚举类型空类型指针类型数组类型结构体类型派生类型共用体类型函数类型c#:类型分为:值类型、引用类型。值类型直接存放真正的数据,值类型都有固定的长度,比如int占用4个字节,值类型的变量保存在堆栈上。作为值类型的变量,每个都有自己的数据,因此对一个变量的操作不会影响其他变量。引用类型存储对数据的内存地址的引用,位于受管制的堆上。堆用于存储可变长度的数据,比如字符串类型。作为引用类型的变量可以引用同一对象;因此对一个变量的操作会影响另一个变量所引用的同一对象。c#简单类型:整型int型:32位有符号整数-2147483648﹏2147483647long型:64位有符号整数char型:单一的Unicode字符(16位).sbyte型:8位有符号整数,范围在-128~127之间。byte型:16位无符号整数,取值范围在0~255之间。short型:16位有符号整数.ushort型:16位无符号整数,取值范围在0~65,535之间。uint型:32位无符号整数。ulong型:64位无符号整数。不同整型转换原则:小范围类型可以隐式转换为大范围类型,大范围类型转换为小范围类型时要使用显式转换。c#简单类型:浮点型float类型:32位浮点数,取值范围在1.5×10-45~3.4×1038之间,精度为7位数double类型:64位浮点数,取值范围在5.0×10-324~1.7×10308之间,精度为15~16位数。c#简单类型:小数型128位,它所表示的范围从大约1.0×10-28到7.9×1028,具有28至29位有效数字。c#简单类型:布尔型只有两个值true和false如:boolmyBool=false;c#结构类型struct结构名{//结构成员定义}publicstructPoint{intx;inty;strings;}c#enum类型:枚举型除char外的所有整型均可作为枚举型,如果不指明,则默认为整型。常用形式有:enumdays{Sun,Mon,Tue,Wed,Thu,Fri,Sat};//第一个成员值默认为0,第二个为1,……enumdays{Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};//第一个成员值从1开始enumdays{mon=1,wed=3,sun,thu=8};//mon:1,wed:3,sun:4,thu:8c#引用类型引用类型存储对数据的内存地址的引用,位于受管制的堆上。堆用于存储可变长度的数据,比如字符串类型。作为引用类型的变量可以引用同一对象;因此对一个变量的操作会影响另一个变量所引用的同一对象。引用类型包括:类、接口、数组、委托等。c#类型之间的转换•同种类型之间的转换位数少的转换为位数多的,可以使用隐式转换;位数多的转换为位数少的,要使用显式转换。•不同类型之间的转换可以使用Convert类()。c语言数据类型c语言数据类型及范围类型近似大小(位)最小范围char8-128到127unsigned80到255signedchar8-128到127int16-32,768到32,767unsignedint160到65,535signedint16与int相同shortint16与int相同unsignedshortint80到65,535c语言数据类型及范围类型近似大小(位)最小范围char8-128到127unsigned80到255signedchar8-128到127int16-32,768到32,767unsignedint160到65,535signedint16与int相同shortint16与int相同unsignedshortint80到65,535c语言数据类型转换•自动类型转换•C语言规定,不同类型的数据在参加运算前会自动转换成相同类型,再进行运算。转换的规则是:•如果运算的数据有float型或double型,自动转换成double型再运算,结果为double型。如果运算的数据中无float型或double型,但是有long型,数据自动转换成long型再运算,结果为long型。其余情况为int型。doublefloatlongunsignedintchar,short高低c语言数据类型转换•强制类型转换在C语言中也可以使用强制类型转换符,强迫表达式的值转换为某一特定类型。强制类型转换形式为:(类型)表达式强制类型转换最主要的的用途一是满足一些运算对类型的特殊要求,例如求余运算符“%”,要求运算符两侧的数据为整型,(int)2.5%3二是防止丢失整数除法中的小数部分。c#与c运算符和表达式的区别算术、关系、逻辑、位、条件、强制、赋值运算符无明显区别c#:1、字符串连接符c:1、逗号运算符2、is运算符2、指针运算符3、sizeof运算符3、求字节数运算符4、new运算符4、成员运算符5、typeof运算符5、下标运算符6、checked和unchecked运算符6、函数调用运算符c#与c语言表达式区别•表达式是由运算符、变量和常量等组成的符号序列。算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式为基本表达式。共同点:1、强制转换2、运算优先级3、运算符结合性4、一元运算符、二元运算符、三元运算符5、自增自减为一元运算符6、标识符不同点:c#不支持从整型到布尔类型的转换结构化程序的区别•c语言:1、顺序结构2、选择结构3、循环结构4、数组5、函数实现模块化程序ABAB开始结束NS图:A、B为操作框,可由一条或多条语句实现。传统流程图与N-S流程图的区别:传统流程图——流程线可向前或向后随意转移;N-S流程图——从画法上取消了流程线,杜绝了基本结构之间的转移,提高了算法的可靠性。传统流程图N-S流程图入口出口ABPPABTFTF其中:P为分支判断条件;A、B必有一个且只有一个被执行;A、B之一可是空操作,用表示。if语句的三种形式单路分支:条件成立执行操作,不成立什么也不做;双路分支:条件成立执行A操作,不成立执行B操作;嵌套分支:条件成立执行A操作,不成立时还需要进一步进行分支判断。1.switch的一般形式switch(表达式){case常量1:{s1;break;}case常量2:{s2;break;}┇case常量n:{sn;break;}default:sn+1}其中:表达式可是任何形式,但其值应为整型;内嵌语句Sn可是一条语句、复合或空语句;在switch中可以使用break语句跳出switch结构;常量i可是整、字符、符号常量、常量表达式。2.switch的执行流程首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出。当型循环——先判断后循环,有可能一次也不循环。入口FTPA当P为真A出口其中:P为循环判断条件;A为要重复执行的操作,称为循环体;一般形式:while(表达式)语句其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:首先求解表达式并对其值进行逻辑判断,为真执行内嵌语句;之后再次求解表达式并判断,为真再次执行内嵌语句;当表达式值为假时,退出while循环,执行后续语句。一般形式:do语句while(表达式);其中:表达式表示了循环条件;形式:任何表达式。内嵌语句为循环体;形式:单条、复合、空语句。执行流程:首先执行内嵌语句,之后求解表达式并对其值进逻辑判断,为真再次执行内嵌语句,如此反复,直到表达式的值为假退出do-while循环。一般形式:for(表达式e1;表达式e2;表达式e3)语句其中:内嵌语句为循环体;形式:单条、复合、空语句;各表达式可是任何形式的表达式;通常:表达式e1用于对循环控制变量赋初值;表达式2给出循环控制条件;表达式3使循环控制变量增值。使用说明:1)for语句三个表达式的作用可理解为:for(循环变量赋初值;循环条件;循环变量增量)语句2)e1、e1、e3均为可选项,它们可分别地或同时被省略。正确的循环嵌套形式:外循环┇内循环┇外循环内循环1内循环2三重循环一个循环体内又包含一个完整的循环结构,称为循环的嵌套;嵌套的层次可是双重的或多重的。C四种形式的循环可以互相嵌套,但绝不能出现交叉现象。错误的循环交叉形式:循环的附加控制,将打破常规的循环机制。1.break语句一般形式:break;功能:用于跳出由while、do-while、for构成的循环结构,或跳出switch构成的多路分支结构。2.continue语句一般形式:continue;功能:用于由while、do-while、for构成的循环中,跳过本次循环后面尚未执行的语句,提前结束本次循环,并继续循环流程的下一步。数组•一维数组的定义、引用、初始化•二维数组的定义、引用、初始化•字符组的定义、引用、初始化c#与c语言的结构化程序不同点•c#中新增foreach循环语句foreach(数据类型循环变量in数组或集合){循环体语句或语句块;}EndingStyle