C语言中的一些疑难杂症

C语言中的一些疑难杂症

或与且:

&&:只有当a和b的值均非0时,结果为1,否则结果为0。

||:只有当a和b的值均为0时,结果为0,否则结果为1。

二维数组可以看作是一种特殊的一维数组,即它的元素又是一个一维数组。 函数中的形式参数是局部变量。 广义的讲,C语言字符集中的每个字符都可以用转义字符表示。 gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。 使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了。 如果前面使用的不是 gets() 而是 scanf,那么通过键盘给 ch 赋值前就必须先使用 getchar() 清空缓冲区。 fabs函数是一个求绝对值的函数,求出x的绝对值,和数学上的概念相同,函数原型是extern float fabs(float x),用法是#include fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。 相同结构体的变量之间可以赋值。 每个case语句后面如果没有break语句,则程序的执行流程将发生变化,即顺序执行各个case语句。这种情况一般不符合程序员的设计思路,但也可以用这种特性完成特殊控制。

例题分析:

设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。 A、不确定B、doubleC、intD、float 答案:B 在C语言中,不同类型的变量在进行算术运算时,float型的变量要无条件的转化为double型。这样f转化为double(双精度型)型并与也为double(双精度型)的i相乘,得到double(双精度型)的值。 之后,算10+‘a"。由于'a'为字符型,C语言规则,字符型数据在参加算术运算是要无条件的转化为int(整形)。这样10+’a'就为整型。最后10+'a'的值与i*f相加。 10+‘a'为整型,i*f为double(双精度型),由于double(双精度型)比整形高,所以整型变量自动变为double型。两个double(双精度型)的数相加,和仍为double(双精度型)。 类型char->int->unsigned->long->double<-float这样转换的原因是为了尽可能的使得到的结果精度高。 #define P 3 #define S(a) P*a*a main() {int ar; ar=s(3+5) printf("\n%d",ar) } #define宏都是直接替换的,不会计算后再替换。 s(3+5) = p*3+5*3+5 = 9+15+5 =29 若想计算后在替换,需要加上括号: #define S(a) P*(a)*(a)
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
07-11 11:10
门头沟学院 Java
请问各位大三兄弟们跟hr说多久实习时间到时候可以提前跑路吗?
程序员小白条:问就是六个月以上,可以一年,实习都这样,你入职后想跑就跑
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务