随笔
m0_59696689
这个作者很懒,什么都没留下…
展开
-
C++对比C语言
C++和C语言的区别。已更新一条。原创 2022-06-11 20:00:10 · 142 阅读 · 0 评论 -
宏替换和去注释的问题
由于在预处理中,计算机是先进行去注释再宏替换的,所以在运行如下代码时#include<stdio.h>#define abc //int main() { abc printf("haha\n");return 0;}才不会打印haha。原创 2021-12-10 15:36:05 · 523 阅读 · 0 评论 -
取模和取余的区别
注意了,除了python是取模,c,c++,c#,java等都是取余。取余和取模在大于0时没有区别,比如,10 / 3 = 3;10%3 = 1;但是当数小于0时,就有区别了,一般来说,绝对值abs(取模的商)会比abs(取余的)大。在绝对值了之后,取模的商*除数是要大于被除数的,而取余的商*除数要小于被除数。如 -10 % 3 = 1;-10 / 3 = -3是取余。而 -10 % 3 = 2;-10 / 3 = -4是取模。...原创 2021-12-09 18:21:17 · 1038 阅读 · 0 评论 -
continue 对于 while 和 for 循环的区别
//int main() {// for (int i = 0; i < 10; i++) {// printf("continue befor : %d\n", i);// if (i == 5) {// printf("%d\n", i);// continue;// }// printf("continue after : %d\n", i);// }//}int ...原创 2021-12-02 21:57:38 · 835 阅读 · 0 评论 -
键盘被称为字符设备的原因
int main() { while (1) { int ch = getchar(); printf("%c ", ch); }}如图所示,ch为int类型,打出的却和输入一样,为字符类型,所以我们在显示屏上所看到的时字符型,c语言有三个输出流,stdin,stdout,和stderror,这三个输出流让系统在内部就打开了文件,不用我们自己动手打开了,这也是为什么我们不用运行exe这样的文件也能运行这个程序。而stdout输出在屏幕上的时...原创 2021-12-02 16:21:14 · 693 阅读 · 0 评论 -
关于getchar为啥是int类型
如果是char 类型就无法 表示获取失败了!getchar()函数用于读取字符,但它返回的是一个int型值,而不是char型值。 尽管表示字符的代码本身是不是int型值,但返回int型值的原因是为了允许函数报告文件的末尾(EOF)。 如果返回值是char型,那么在256个字符中必须有一个被指定用于表示EOF。-1char类型读不到...原创 2021-12-02 16:09:39 · 1425 阅读 · 0 评论 -
2021-11-28 c语言全方位补习
gets 和 scanf都是以'\0'结束,但不同的是gets的字符串可以带空格,scanf不行,scanf要用在字符串要么就加数组,要么就scanf("%[^\n]%*c", arr);这么写。其次,用数组写字符串的时候可以%s一次性全部输出,也可以%c遍历一次次输出。被static字段修饰的变量,在整个程序运行阶段只会被定义一次...原创 2021-11-28 15:41:49 · 508 阅读 · 0 评论 -
2021-11-26 float 和int 的原反补
int main() { int number = 9; printf("%d\n", number); float* n = (float*)number; printf("%f\n", n); printf("%d\n", n); return 0;}同样是打印float n ,以整形的形式打印出来和以浮点型的形式打印出来却截然不同,这就要涉及到数据在内存中储存的问题了。首先我们来看int number 和 float n 的原反补:...原创 2021-11-26 13:07:00 · 203 阅读 · 0 评论 -
2021-11-23 数组名
int arr[20];arr是首地址名,相当于指针,这时不能再加&取地址符,不然就成了首地址的地址了。正确表达:int main() { int arr[20] = {0}; int* p = arr; printf("%d ", *p);}注意,当printf时应选择用*p而不是p,这是因为*是解引用操作符,*p指向的对象是arr,数组的首地址,而p指向的是一个随机值,因为我们并没有给它赋值过(并且不能直接给p赋值)。可以通过改变*p来改变数组的首地址...原创 2021-11-23 22:31:47 · 206 阅读 · 0 评论 -
指针与类型问题
#include <stdio.h>int main(){int arr[] = {1,2,3,4,5};short *p = (short*)arr;int i = 0;for(i=0; i<4; i++){*(p+i) = 0;}for(i=0; i<5; i++){printf("%d ", arr[i]);}return 0;}这么一窜代码,它的输出确实0 0 3 4 5 ,因...原创 2021-11-17 13:09:11 · 44 阅读 · 0 评论 -
2021-10-28 2021-10-26的问题纠正
#include <stdio.h>#include <string.h>#define max 9int main() { int a, b, c; int number = scanf("%d%d%d", &a, &b, &c); printf("%d", number); return 0;}可以看到输出的scanf的赋给number的值是根据scanf中有几个数被赋值而变得。如图中有三个值,则scanf的总值就为3,把3..原创 2021-10-28 21:00:17 · 51 阅读 · 0 评论 -
2021-10-26 随笔 scanf 的赋值问题
大家好,在今天写代码的过程中,本人想省略行数,于是把下列函数进行了修改:#include <stdio.h>int main() { int a; scanf("%d", &a); printf("%d", a); return 0;}我把它进行了调整,变成了以下代码#include <stdio.h>int main() { int a = scanf("%d", &a); print原创 2021-10-26 22:16:25 · 1180 阅读 · 0 评论