计算机只理解一种语言——机器代码,即一串二进制0、 1流(计算机可以直接读取)。你可以在编译器(著名的GCC)的帮助下将C代码转化为机器代码。
**1.源代码:**从创建一个源文件开始,源文件就是供人阅读的C代码(xxx.c文件)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LGprqRoq-1639449984098)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3ebcad27-881d-4318-af11-d78ca4911abf/Untitled.png)]
**2.编译:**通过编译源代码,编译器会检查错误一旦他觉得没问题,就会编译源代码
编译指令:gcc x.c -o xx
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4B6JkKq9-1639449984099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/795b9beb-0b5d-4d62-85da-00894b93f931/Untitled.png)]
**3.可执行代码:**编译器会创建一个叫可执行文件的新文件(win是.exe),文件中就是机器代码,即计算机能够理解的0,1流(二进制流),而这个文件就是可以运行的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuLhFbp7-1639449984100)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9368d7a9-5904-4d3b-a021-a0cd646740b7/Untitled.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUKm5dFx-1639449984102)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e2d3d2fb-b347-4b90-8872-dd4f8b9cfa8c/Untitled.png)]
为了写出速度快、 空间小、 可移植性高的程序, 人们常使用C语言。 绝大多数的操作系统、 其他计算机语言和大多数游戏软件都是用C语言写的。
你可能会遇到三种C标准。 ANSI C始于20世纪80年代后期, 适用于最古老的代码; 1999年开始的C99(Clion编辑器默认使用的标椎)标准有了很大的改进; 在2011年发布的最新标准C11中, 加入了一些很酷、 很新的语言特性。 不同版本的标准之间差别不是很大。
#include <stdio.h>
//函数声明,不写函数体
void demo03();
int main() {
printf("Hello, World!\n");
printf("第一段C语言程序");
return 0;
}
int demo01() {
int card_count = 11;
if (card_count > 10) {
puts("card_count>10==true");
}
return 0;
};
void demo02() {
int c = 10;
while (c > 0) {
puts("我开始学习C语言啦");
c -= 1;
}
};
void demo03() {
char ex[20];
puts("输入女友的名字:\t\n");
//输入最多长度为19个字符
scanf("%19s", ex);
printf("你的女友名字为:%s",ex);
};
void demo04() {
char a = 'H';
switch (a) {
case 'C':
puts("梅花");
break;
case 'D':
puts("樊哙");
break;
case 'E':
puts("刘备");
break;
case 'H':
puts("五折天");
break;
default:
puts("黑桃");
}
};
了创建完整的程序,需要在C源文件中输入代码。任何文本编辑器都可以创建C源文件,它们的文件名通常以.c
结尾。
说明:注释描述了文件中这段代码的意图,也可能包含一些许可证或者版权信息。在这个地方(或文件的任何地方)添加注释不是必需的,但加上是个好的做法,也是大多数C程序员希望看到的。
/*
* 计算牌盒中牌数量的程序。
* 本代码使用“拉斯维加斯公共许可证”。
* (c)2014, 学院21点扑克游戏小组。
*/
说明:
C语言是一种很小的语言,如果不使用外部库,它几乎什么也干不了。为了告诉编译器程序要使用哪些外部代码,需要包含( include
)相关库的头文件。 stdio.h
是最常见的头文件, stdio
库中包含了那些能在终端读写数据的代码。
#include <stdio.h>
说明:
所有的C代码都在函数中运行。函数名在返回类型之后出现,如果函数有参数,可以跟在函数名后面。最后是函数体,函数体必须被花括号包围。对任何C程序来讲,最重要的函数是main()函数。 main()函数是程序中所有代码的起点。(程序方法入口)。
//函数声明,不写函数体
void demo03();
int main()
{
int decks;
puts("输入有几副牌");
scanf("%i", &decks);
if (decks < 1) {
puts("无效的副数");
return 1;
}
printf("一共有%i张牌\n", (decks * 52));
return 0;
}
编译并运行程序的过程参照上文:C语言的工作方式。
在大部分机器中,可以使用如下命令进行编译运行代码:
gcc xxx.c -o xxx && ./xxx
这条命令只有在编译成功的情况下才会运行新程序, 一旦编译过程中出了问题, 它就会跳过运行程序这一步, 仅仅在屏幕上显示错误消息。
因为在类Unix操作系统中,运行程序必须指定程序所在的目录,除非程序的目录已经列在了PATH环境变量中。
void demo03() {
char ex[20];
puts("输入女友的名字:\t\n");
//输入最多长度为19个字符,过了19这个长度我就不进行记录了
scanf("%19s", ex);
printf("你的女友名字为:%s",ex);
};
C语言比其他大多数语言的抽象层次更低,因此它不提供字符串,而是用了相似的东西来代替:以字符为元素的数组。如果你用过其他语言,一定已经见过数组了,数组就是一张有名有姓的事物清单,所以ex只是一个变量名,用来引用你在命令提示符输入的那张字符列表的。把ex定义为大小为20个字符的数组,就可以用ex[0]
和ex[1]
分别引用第一和第二个字符。了解更多关于字符的问题。
只有一个区别:字符串字面值是常量。也就是说这些字符一旦创建完毕,就不能再修改它们。是否可以修改取决于你采用的编译器,如果使用的是编译器是gcc,那么当你尝试修改字符串时就会报总线错误。
C语言采取不同的方式在存储器中保存字符串字面值。总线错误意味着程序无法更新那一块存储器空间。(简而言之就是无法进行修改)
首先,“等号”不一定表示的就是等于。在C语言中,“等号”用来赋值,而“双等号” 用来检查两个值是否相等(比较的也是指针)。如果想要增加或减小变量的值, 可以用+=
和-=
这两个赋值运算符, 它们让代码看起来更简短。最后,如果想要对变量的值加1或减1,可以用 + +
和--
。
int main(){
int i=0;
i+=1;
i++;
i--;
i-=1;
}
ANSI C标准没有用来表示真和假的值, C程序把0这个值当做假处理, 把0以外的任何值当做真处理。 C99标准则允许在程序中使用true和false关键字。 但编译器还是会把它们当做1和0这两个值来处理。
主要区别在于是否存在短路情况。&和|操作符总是计算两个条件,而&&和||可以跳过第二个条件。I、&还属于位运算符,可以对数字的某一位进行布尔运算。
Linux练习 一1.用命令和正则表达式按照要求建立文件 *)用一条命令建立12个文件WESTOS_classX_linuxY(X的数值范围为1-2,Y的数值范围为1-6) *)这些文件都包含在root用户桌面的study目录中[[email protected] Desktop]# mkdir study[[email protected] study]# touch WESTOS_class{1..
1 .实验目的学习如何利用管道机制、共享存储区机制进行进程间的通信,并加深对上述通信机制的理解。2 .实验内容(1) 了解系统调用pipe()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。(2) 编写一段程序,使其用管道来实现父子进程之间的进程通信。子进程向父进程发送自己的进程标识符,以及字符串“is sending a message to...
第一种方式——编码统一 我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出...
1、IE9以上支持SVG,IE11的支持最好。 要支持SVG需要添加 , 并且本地IE内核需要在10以上2、SVG箭头的移动和放大缩小在IE中不是很好的支持, 添加如下行: (感觉是重绘)参考:http://stackoverflow.com/questions/15693178/svg-line-markers-not-updating-when-line-moves-
第一章:认识工具,掌握基础通过今天的学习,读者可以了解集成电路设计工具的历史背景情况,同时熟悉国内外的产业差距。今天的学习将为后面的操作打下基础,读者需要尽可能的熟悉软件和Verilog语法,了解Robei软件的结构和操作方式,并知道如何注册和寻找Robei资源。今天学习完成后,熟悉Verilog语言的读者可以加深记忆,刚刚开始学习FPGA设计的读者也可以轻松地掌握Verilog语言的结构和语法...
2020/04/04全国默哀日此时大家发现很多网站,app,小程序的整体色调全部变为了灰色,其实并不是所有的图标全部替换了灰色,只是在css中设置了一个属性这以小程序为例子app.wxss全局的样式文件中page { -webkit-filter: grayscale(.95);}此时小程序整体就变为了灰色...
我们经常在java中去调用c接口,这是因为时常会有用java实现较难但用c实现较为简单的功能,所有这个时候我们需要编写相关代码实现在java中调用c,如下示例: 1),java文件 JavaCallC.java 2)在C语言中实现上述要在C接口中实现的方法: 如: public native int StrInInt...
[100% 1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninjaFAILED: out/soong/build.ninjaout/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstr...
常规卷积:常规卷积需要的参数量:Cin×K×K×Cout分组卷积:分组卷积需要的计算量 :Cin×K×K×Cout / g 深度可分离卷积(Depthwise Separable Convolution): 需要的计算量:Cin×K×K+Cout×1×1实现:import torchfrom torchsummary import summaryimport torch.nn as nn'''实现分组卷积demo'''class ...
WARNING Compiled with 3 warnings 10:42:2...
首先要在电脑上安装配置Android SDK 刷机失败后手机变砖无法在手机上完成操作,此时就需要借助Android SDK工具,所以你必须在操作的电脑上下载并安装Android SDK程序。 程序的下载地址和具体的安装配置方法请参照参考资料:23然后我们需要安装Android手机USB驱动程 安装完Android SDK后就可以把手机通过USB线缆连接至电脑,开启手机电源后电脑会提示安装设...
十月底,投完会议之后,便对科研写作方面遇到的问题进行了探索。问题主要有:问题:文献管理问题:在写论文的过程中,经常要引用他人文献,这时需要费时去寻找。另一方面,有时想要查看曾经读到的某篇文章提到的方法, 也需要去耗时去寻找。画图问题:怎样画出好看的图?解决方案:针对问题1: 使用JabRef针对问题2:使用Pgfplots后面我将会用一系列文章来记录JabRef和Pgfplots的常用使