C语言程序的解释

C语言程序的解释,第1张

#include #include是固定格式,意思是”包含“,中的stdio.h,这是一个库函数头,用>括起来,这句意思是把名为stdio.h的头(其实是一个文件)包含到当前的程序中。在C语言中,有许多函数可以直接拿来用,比如printf函数(输出函数),这些函数被称为库函数,要想调用这些函数,就要给出相应的库函数头,不同的库函数需要给出不同的头,库函数头的含义是”将这些函数的定义包含到程序中去“,因为你的程序中没有这些库函数的定义,所以你想要调用某些库函数,就要给出相应的头,将函数的定义包含到程序中是有编译器完成的 #define CUBE(x) (x*x*x) 这是C语言中的宏定义,宏分为简单的宏和带参数的宏,宏有什么作用?宏的一般格式是”#define 记号 替换列表“其中# define是“定义”的意思,也算是固定格式吧,记号可以是字母,符号等一切可能出现的东西,比如说#define CUBE(x) (x*x*x) 中的CUBE,一般用大写字母(C语言程序员数十年遵循的规范,希望你不要打破哦);"替换列表“可以是表达式,语句等等(比如#define CUBE(x) (x*x*x) 中的(x*x*x),表示计算X的立方)。宏的作用是将程序中出现的所有记号用替换列表代替。比如说#define CUBE(x) (x*x*x)中,只要程序中出现CUBE(x) ,编译器(这个工作是有编译器完成的)就把CUBE(x) 替换为(x*x*x)。简单的宏比如#define N 10,在程序中凡是有N的地方都将被替换为10.带参数的宏比如说你的程序中的宏#define CUBE(x) (x*x*x),CUBE是记号,括号中的x是参数,就像一个函数,在程序中用的时候,比如出现i=CUBE(10)那么就将被替换为i=(10*10*10)i的值将被赋予10的立方。 main() 是C语言中的主函数,C语言是由函数组成的,其中主函数(或称main函数)是必须有的,程序执行的时候是由主函数开始执行的,主函数内容要用{}括起来 int n=5定义变量n并赋与n值为5. int表示变量n的类型是整型,n=5是将n的值初始化为5(以后换可以改变),后面的分号是必须有的,C语言规定每条语句后都应该以分号结尾。 int s=CUBE(++n)定义s为整型并赋予s的值为CUBE(++n),CUBE(++n)前面已经说过了,它将被替换为(++n*++n*++n),其中++n是一种算数运算符,就像乘除加减法一样,++n的意义是将n自增1,整个表达式(即++n)不变,这里要分清变量和表达式,比如a+b,变量是a和b,表达式是a+b,。所以这里s就等于125. printf(“%d”,s)这是一个输出函数,%d表示S的类型为整形,输出s的值。

请参考以下代码。我把所有相关的数据转换为2进制,这样方便肉眼计算。 #include #include int main(void){ unsigned int a=0152,b=0xbbchar s[64]int iprintf("====================================================\n")memset(s, 0, sizeof(s))itoa(a, s, 2)printf("a = \t\t%032s\n", s)memset(s, 0, sizeof(s))itoa(b, s, 2)printf("b = \t\t%032s\n", s)printf("====================================================\n")// Bit或运算 memset(s, 0, sizeof(s))itoa(a|b, s, 2)printf("a|b = \t\t%032s\n", s)// Bit与运算 memset(s, 0, sizeof(s))itoa(a&b, s, 2)printf("a&b = \t\t%032s\n", s)// Bit异或运算 memset(s, 0, sizeof(s))itoa(a^b, s, 2)printf("a^b = \t\t%032s\n",s)// Bit取反运算 memset(s, 0, sizeof(s))itoa(~a, s, 2)printf("~a = \t\t%032s\n", s)memset(s, 0, sizeof(s))itoa(~b, s, 2)printf("~b = \t\t%032s\n", s)memset(s, 0, sizeof(s))itoa(~a+~b, s, 2)printf("~a+~b = \t%032s\n", s)printf("====================================================\n")// For test... // 计算a<<=b, 显示每次移动一位的结果。 for (i = 0i <bi++) { memset(s, 0, sizeof(s))itoa(a<<(i+1), s, 2)printf("a<

while((c=getchar())!='?') 意思就是当输入的字符不是“问号”即“?”时 执行循环

putchar(--c)意思就是输出c所对应的ASC码的前一个所对应的字符

另外你输入Y?N?<ENTER>。。。Y后面的应该都是多余的吧 getchar()只能读一个字符吧

所以只读进一个Y 因为Y不等于? 所以输出Y的前一个字符就是X


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7750860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存