前言
C标准有:C89 C90 C99 C11()
IDE(集成开发环境):Dev-C++ 是一个Windows环境下的一个适合于初学者使用的轻量级 C/C++ 集成开发环境(IDE),类似于Android Studio或者Eclipse。它是一款自由软件,遵守GPL许可协议分发源代码。它集合了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。
第一个程序:HelloWorld
在Dev-C++中新建source file
#include <stdio.h>
#include <stdlib.h>
main(){
printf("Hello World \n"); //C语言中打印函数没有换行 需要自己加换行符
system("pause"); //让窗口显示,会显示“请按任意键继续...”
}
编译运行如下
C代码调用Java代码
首先写个Java类,里面程序入口main方法;在主方法中输出一句话,能区分是Java代码和C代码;这里
Java代码
public class HelloWorld{
public static void main(String[] arg){
System.out.println("Hello from Java");
}
}
接着把Java代码编译成字节码文件即:.class文件;
C代码:
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("Hello \n");
system("java -classpath D:\\JNI HelloWorld"); //HelloWorld是字节码文件(HelloWorld.class)D:\\JNI目录下存放的是编译好的HelloWorld.class文件;
}
能执行Java命令的可能原因:是win系统使用C语言写的,C对win系统来说就是本地语言,所以能在C中执行java命令;这个Java命令本来也是win系统中能执行的!
基本数据类型
int 32 bit , 能表示的数字是2的32次方个
最高位用来表示符号位,那么还剩下31位可以表示数值,所以能表示的数字就是2的31次方个
int的表示范围:
当最高位是0时:0~2147483647
当最高位是1是:-2147483648~-1
Java的基本数据类型长度
byte:1 个字节(8bit)
short:2 个字节(8位)
int: 4
long:8
boolean:1
char: 2
float: 4
double:8
C的基本数据类型长度
short:2
int:4
long:4
char:1
float:4
double:8
Java的基本类型 | 对应C中的类型 | 备注 |
byte | char | 长度一样,C中char可以用Java中的byte表示 |
short | short | |
int | int 或者long | C中的long 在Java中可以用int表示 |
long | long long | |
boolean | char | C语言没有Boolean在C中可用char表示 |
char | ||
float | float | |
double | double | |
char 和long 这两个不是一一对应的 |
代码验证C语言基本类型的长度:
#include <stdio.h>
#include <stdlib.h>
main()
{
//char int flort double long short signed unsigned
int a = 1;
char b = 'd';
printf("a的值%d \n",a); //%d用来输出整型的
printf("int的长度:%d \n",sizeof(int)); //关键字 sizeof 查看变量或者结构体的长度,这里直接给类型也是可以的
printf("float的长度:%d \n",sizeof(float));
printf("double的长度:%d \n",sizeof(double));
printf("long的长度:%d \n",sizeof(long));
printf("short的长度:%d \n",sizeof(short));
printf("char的长度:%d \n",sizeof(char));
printf("long long的长度:%d \n",sizeof(long long));
}
C中基本输出函数
以下是常用占位符:
%d — int
%ld — long int
%hd — 短整型
%c — char
%f — float
%lf — double
%u — 无符号数
%x — 十六进制输出 int 或者long int 或者short int
%o — 八进制输出
%s — 字符串
占位符在输出函数的应用:
#include <stdio.h>
#include <stdlib.h>
/* %d - int %ld – long int %hd – 短整型 %c - char %f - float %lf – double %u – 无符号数 %x – 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s – 字符串 */
main()
{
int i = 1123;
char c = 'a';
float f = 3.3333333;
double d = 332244335533;
int i2 = -1;
char arr [] = "你好";
printf("i = %d \n",i);
printf("c = %c \n",c);
printf("f = %f \n",f);
printf("d = %lf \n",d);
printf("i2 = %d \n",i2);
printf("i2 = %u \n",i2);
printf("i = %x \n",i);
printf("i = %#x \n",i); //加个#会根据进制自动加上进制开头
printf("i = %#o \n",i); printf("arr = %s \n",arr);
}
C 语言输入函数
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("请输入年龄:");
int age;
scanf("%d",&age); //&是取出age的内存地址,把输入的数据存到这个地址中;
printf("年龄为:%d \n",age);
printf("请输入姓名:");
char name [10]; //注意定义数组的时候没有赋值,需要指定数组大小;
scanf("%s",&name);
printf("年龄为:%d,姓名为:%s",age,name);
}
C倒计时
#ifdef __unix__
#include
#elif defined _WIN32
#include
#define sleep(x) Sleep(x)
#endif
#include <stdio.h>
#include <stdlib.h>
main()
{
int i;
printf("%#x\n", &i);
for(i = 100; i > 0; i--){
printf("剩余时间:%d\n", i);
sleep(1000);
}
system("pause");
}