c语⾔long转string_C语⾔笔记
IDE推荐
1、编译器仅使⽤GCC即可,IDE使⽤ VSCode、 Vim都可以。这样的好处是,能学到GCC命令⾏的⼀些⽤法,⽽不是只知道点⼀下按钮就运⾏了。
2、使⽤提⽰功能很强⼤的Clion、VS Studio、Xcode、Eclipse等IDE,编译的时候使⽤GCC命令⾏,尤其是初学的时候。
不建议使⽤已经过时的 TurboC 、 VisualC++6.0。
Hello World
⽰例程序:test.c
#include
int main(){
printf("Hello World");
return 0;
}
运⾏:
c++string类型$ gcc main.c -o main && ./main
Hello World
1) 第1⾏引⼊ stdio库,因为 printf函数在 stdio库⾥。2) 第2⾏开始定义主函数 main。main 是程序的⼊⼝函数,⼀个C程序必须有 main 函数,⽽且只能有⼀个。3) 第3⾏调⽤ printf 函数向显⽰器输出字符串。4) 第4⾏是 main 函数的返回值。程序运⾏正确⼀般返回 0。
C语⾔规定,⼀个程序必须有且只有⼀个 main 函数。main 被称为主函数,是程序的⼊⼝函数,程序运⾏时从 main 函数开始,直到main 函数结束(遇到 return 或者执⾏到函数末尾时,函数才结束)。
引⼊头⽂件使⽤ #include命令,并将⽂件名放在 < >中, #include 和 < > 之间可以有空格,也可以没有。库的名称也可以是 " "号,表⽰默认先从当前代码所在的⽂件夹,不到再到系统⽂件夹。
较早的C语⾔标准库包含了15个头⽂件, stdio.h 和 stdlib.h 是最常⽤的两个:
stdio 是 standard input ouput 的缩写, stdio.h 被称为“标准输⼊输出⽂件”,包含的函数⼤都和输⼊输出有关, puts() 就是其中之⼀。
stdlib 是 standard library 的缩写, stdlib.h 被称为“标准库⽂件”,包含的函数⽐较杂乱,多是⼀些通⽤⼯具型函数, system() 就是其中之⼀。
如果我们没有调⽤任何函数,所以不必引⼊头⽂件:
int main()
{
return 0;
}
GCC编译C
Linux下使⽤最⼴泛的C/C++编译器是GCC,⼤多数的Linux发⾏版本都默认安装,不管是开发⼈员还是初学者,⼀般都将GCC作为Linux 下⾸选的编译⼯具。
输⼊下⾯的命令:
gcc test.c -o test
可以直接将C代码编译链接为可执⾏⽂件。
可以看到在当前⽬录下多出⼀个⽂件 test,这就是可执⾏⽂件。不像Windows,Linux不以⽂件后缀来区分可执⾏⽂件,Linux下的可执⾏⽂件后缀理论上是可以任意更改的。然后运⾏可执⾏⽂件:
./test
当然,也可以分步编译:
1) 预处理
gcc -E test.c -o test.i
在当前⽬录下会多出⼀个预处理结果⽂件 test.i,打开 test.i 可以看到,在 test.c 的基础上把stdio.h和stdlib.h的内容插进去了。
2) 编译为汇编代码
gcc -S test.i -o test.s
其中 -S参数是在编译完成后退出, -o为指定⽂件名。
3) 汇编为⽬标⽂件
gcc -c test.s -o test.o
.o就是⽬标⽂件。⽬标⽂件与可执⾏⽂件类似,都是机器能够识别的可执⾏代码,但是由于还没有链接,结构会稍有不同。
3) 链接并⽣成可执⾏⽂件
gcc test.o -o test
如果有多个源⽂件,可以这样来编译:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
注意:如果不指定⽂件名,GCC会⽣成名为a.out的⽂件,.out⽂件只是为了区分编译后的⽂件,Linux下并没有标准的可执⾏⽂件后缀名,⼀般可执⾏⽂件都没有后缀名。
编译后⽣成的test⽂件就是程序了,运⾏它:
./test
如果没有运⾏权限,可以使⽤sudo命令来增加权限(注意要在Linux的分区下):
sudo cdmod test 777
对于程序的检错,我们可以⽤ -pedantic、 -Wall、 -Werror选项:
-pedantic选项能够帮助程序员发现⼀些不符合 ANSI/ISO C标准的代码(并不是全部);
-Wall可以让gcc显⽰警告信息;
-Werror可以让gcc在编译中遇到错误时停⽌继续。
这3个选项都是⾮常有⽤的。
语法基础
字符串转义
看下⾯程序:
#include
int main(){
puts("C\tC++\tJava\nC first appeared!\a");
return 0;
}
运⾏结果:
C C++ Java
C first appeared!
同时会听到喇叭发出“嘟”的声⾳,这是使⽤ \a的效果。
转义字符表:
转义字符意义 ASCII码值(⼗进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前⼀列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换⾏(LF) ,将当前位置移到下⼀⾏开头 010
\r 回车(CR) ,将当前位置移到本⾏开头 013
\t ⽔平制表(HT) (跳到下⼀个TAB位置) 009
\v 垂直制表(VT) 011
\\ 表⽰\本⾝
\" 表⽰"
负数的表⽰
#include
int main()
{
unsigned int a = 0x100000000;
int b = 0xffffffff;
printf("a=%u, b=%d\n", a, b);
return 0;
}
运⾏结果:a=0, b=-1
这⾥b为什么是-1呢?
在计算机中,负数以原码的补码形式表达。
原码:⼀个正数,按照绝对值⼤⼩转换成的⼆进制数;⼀个负数按照绝对值⼤⼩转换成的⼆进制数,然后最⾼位补1,称为原码。反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后⼀位加1。
变量 a,b 均为 int 类型,占⽤4个字节(32位),那么 -1的原码是 10000000000000000000000000000001, 反码是11111111111111111111111111111110, 补码是 11111111111111111111111111111111, 即16进制的 0xFFFFFFFF。所以0xFFFFFFFF就是表⽰ -1。
运算符优先级
位运算
位运算符和移位运算符的计算主要⽤在⼆进制中。
位运算符主要包含:与(&)、或(|)、⾮(~)、异或(^),移位运算符主要包含左移(<>)。阅读本⽂,您应对⼆进制有了解。位运算符
快速记忆:
与:全1为1
或:有1为1
异或:相异为1
⾮:取反
移位运算符
左移:相当于把⼀个数乘以2^n倍,即左移⼀次相当于乘以2。
右移:相当于把⼀个数除以2^n倍,即右移⼀次相当于除以2。
typedef
⽤于定义新类型。⽰例:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论