Android JNI编程(二)——C语言的基本数据类型,输出函数,输入函数

目录(?)[+]

在学习C语言数据类型之前,我们先来回顾一下Java中的基本数据类型和其特点

一:基本数据类型

1.在Java中有八大基本数据类型和一个引用数据(String)类型如下:

byte      1字节
char      2字节
short     2字节
int       4字节
float     4字节
long      8字节
double    8字节
boolean   

2.那在C语言中又有哪些类型呢?我们可以来看一下

int        4字节
char       1字节
float      4字节
double     8字节
long       4字节
short      2字节
signed     4字节
unsigned   4字节
void       1字节

3.C语言为我们提供了一个函数可以直接用来计算类型的长度,这样想知道一个类型的长度就非常方便了

//计算类型的长度:sizeof(类型)返回一个长度为int型
main() {
    //计算类型所占的长度
    printf("int类型所占的字节:%d\n",sizeof(int));
    printf("char类型所占的字节:%d\n",sizeof(char));
    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("signed类型所占的字节:%d\n",sizeof(signed));
    printf("unsigned类型所占的字节:%d\n",sizeof(unsigned));
    printf("void类型所占的字节:%d\n",sizeof(void));
}

4.细心的你可能会发现怎么少了个boolean类型呢?那该要怎么做判断呢!原来C语言使用的是非零和0来表示true和false。

    //C语言中boolean类型,0表示为false,非零表示true
    if(0) {
        printf("false\n");
    } else {
        printf("true\n");
    }

5.Java基本数据类型和C语言的一些区别:

  1. java中char类型的长度为2个字节,C语言中的长度为1个字节
  2. java中long类型的长度为8个字节,C语言中的长度为4个字节(C99(99年制定的表准)标准规定:long类型的规定,不小于整形)
  3. C语言中没有byte
  4. C语言中boolean类型,0表示为false,非零表示true
  5. singed:有符号范围:-128 ~ 127–>(-2^7 ~ 2^7-1)
  6. unsinged:无符号范围:0 ~ 255 –>(0 ~ 2^8-1)
  7. void:无类型,代表任意类型
  8. C语言中没有String类型,但是可以用char数组来表示

二:输出函数

1.输出函数就简单多了。比java的System.out.println()还要少几个代码

printf("内容");
//如果需要换行我们只需要添加换行符就行了
printf("\n","内容");

2.写一个简单的输出语句

main() {
    char c = ‘a‘;
    printf("c==\n",c);
    //使docs窗口停留
    system("pause");
}

为什么没有输出我们的a呢?原来C语言中对输出内容需要使用到占位符,那我们加个占位符来试下

main() {
    char c = ‘a‘;
    printf("c==%c\n",c);
    //使docs窗口停留
    system("pause");
}

现在终于可以输出来了,那接下来就说一说占位符这个鬼东西。

  • int–>%d
  • long int–>%ld
  • char–>%c
  • float–>%f
  • 短整形(short)–>%hd
  • double–>%lf
  • 十六进制输出–>%#x
  • 无符号(unsigned)–>%u
  • 字符串–>%s
  • 八进制–>%o

不同的类型要用不同的占位符去输出,否则会精度丢失。

3.现在我们来定义一些变量并对其输出

main() {
    char c = ‘a‘;
    int i = 12345678;
    long l = 526247678;
    float f = 3.1415;
    double d = 3.1415926535;
    //后面分析,为什么要这样写
    char* str="我是一个字符串";

    printf("c==%c\n",c);
    printf("i==%d\n",i);
    printf("l==%ld\n",l);
    printf("f==%f\n",f);
    printf("d==%lf\n",d);
    printf("str==%s\n",str);

    //使docs窗口停留
    system("pause");
}

咦~,输出的 f 后面怎么多了两个0呢?在C语言中默认保留小数点后六位,要想保留对应的位数,就需要在%后边加上” .保留位数”如下代码:

printf("f==%.4f\n",f);//效果就是f==3.1415,图就不贴了

三:输入函数

1.输入函数介绍

scanf("占位符",内存地址);

2.写一个简单的输入函数,从控制台输入一个数字并将其打印在控制台上

int i;
printf("亲!请输入一个数字:\n");
//&i,就是取i的地址,也就是把从控制台接收到的数据赋值给i。
scanf("%d",&i);
printf("输入的数字为:%d\n",i);

3.使用数组来表示我们的字符串、使用for循环打印数组内容

    //定义一个数组[]必需在数组名右边
    char arr[]= {‘H‘,‘e‘,‘l‘,‘l‘,‘o‘};
    //for循环需要将变量在外面,不能像java一样定义在里面
    int j;
    for(j=0; j<5; j++) {
        printf("arr[%d]=%c\n",j,arr[j]);
    }
    //C语言中没有String类型,但是可以用char数组来表示
    //直接将数组输出
    printf("arr:%s\n",arr);

4.我们还可以从控制台输入一个字符串

    printf("请输World:\n");
    //声明数组和数组长度
    char arr2[5];
    //将控制台的内容赋值给arr2
    scanf("%s",&arr2);
    printf("arr2:%s\n",arr2);

5.在对数组进行输出的时候你会发现会多输出一些乱七八糟的东西,因为:数组是一块连续的内存空间,需要在数组最后面加上一个‘\0’表示结束

    char arr3[]= {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘\0‘};
    printf("arr3==%s\n",arr3);

这篇文章就先讲到这里了,接下来将继续学习C语言的指针及其他内容;学习的脚步不能停止,继续向前迈进。

时间: 2024-08-03 16:52:41

Android JNI编程(二)——C语言的基本数据类型,输出函数,输入函数的相关文章

Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型,函数之内的 我们先来看一张传播久远的图片' 一.各种数据类型介绍 整型 整形包括短整型.整形和长整形. 短整形 short a=1; 整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前.高位在

Android jni 编程入门

本文将介绍如何使用eclipse和ndk-build来编写一个基于Android4.4版本的包含有.so动态库的安卓程序. 前提是已经安装和配置好了诸如SDK,NDK等编译环境.下面开始编程! 1 程序逻辑 我们要编写的程序包含两部分:java部分--负责界面和调用JNI native函数:JNI native 部分--负责native函数的具体实现(本文使用C语言). native 函数伪代码如下: ? 1 2 3 4 5 6 7 8 /* funtion: 传入两个整形变量,计算他们之和 r

android JNI (二) 第一个 android工程

下载NDK 后 它自带有 sample,初学者 可以导入Eclipse 运行 这里 我是自己创建的一个新工程 第一步: 新建一个Android工程 jni_test(名字自取) 第二步:为工程添加 本地支持 右击工程,选择 android tools -- Add Native support  后,会弹出一个对话框 让你输入 库的名称 这个名字 你可以做修改,也可以使用默认,点击finish 之后,你会发现 该工程里多了几个文件夹,其中有一个叫 jni,这里 就是我们写c代码的地方,jni文件

【转】Android JNI编程—JNI基础

原文网址:http://www.jianshu.com/p/aba734d5b5cd 最近看到了很多关于热补的开源项目——Depoxed(阿里).AnFix(阿里).DynamicAPK(携程)等,它们都用到了JNI编程,并且JNI编程也贯穿了Android系统,学会JNI编程对于我们学习研究Android源码.Android安全以及Android安全加固等都是有所帮助的.但是对于我们这些写Android应用的,大部分时间都是在使用Java编程,很少使用C/C++编程,对于JNI编程也了解的比较

Android jni 编程3(对基本类型一维整型数组的操作)总结版

主要学习资料:黑马程序员的NDK方法使用(生产类库so)              jni编程指南中文版(已上传至博客园) 博主文章(它使用的是VS和eclipse联合开发):http://www.cnblogs.com/activity-life/p/3643047.html //0.传入一维整型数组,无返回值(但已对数组进行了修改) public native void arrayEncode(int[] arr); //1.传入一维整型数组,数组长度(因为c不容易获取而Java方便),返回

【转】android JNI编程 一些技巧(整理)

原文网址:http://blog.csdn.net/linweig/article/details/5203716 本篇将介绍在JNI编程中如何传递参数和返回值. 首先要强调的是,native方法不但可以传递Java的基本类型做参数,还可以传递更复杂的类型,比如String,数组,甚至自定义的类.这一切都可以在jni.h中找到答案. 1. Java基本类型的传递 用过Java的人都知道,Java中的基本类型包括boolean,byte,char,short,int,long,float,doub

Android JNI编程—JNI基础

什么是JNI,怎么使用 JNI--Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的).其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了.那么怎么使用JNI呢,一般情况下我们首先是将写好的C/C++代码编译成对应平台的动态库(windows一般是dll文件,linux一般是so文件等),这里我们是针对Android平台,所以

JNI编程(二) —— 让C++和Java相互调用(1)

自己在外面偷偷的算了下,又有将近两个月没更新过blog了.趁着今天有兴致,来更新JNI编程的第二篇文章.在第一篇里,大概介绍了JNI的特点.用途和优劣.并且做一个最简单的JNI的例子,不过说实话那个例子在实际的开发中没有太大的价值,实际开发中所需要的JNI程序要远远比那个复杂.所以这一篇就来介绍下如何通过JNI实现java和C++的相互通信,来满足实际开发的需要. 所谓”通信“,其实说白了无非也就是我们所说的方法调用,在上一篇的例子里介绍了如何在Java中调用本地的DLL,其实在Java代码中,

JNI编程(二) —— 让C++和Java相互调用(2)

3.getRamdomOrder() 这个方法会从backend得到一个随机的Order对象(抱歉这里“Random”拼错了),然后再调用java中相应的通知方法来通知foreground.getRamdomOrder方法没有参数,但是所对应的C++方法里却有两个参数,一定有人会不解.其实细心的朋友一定会发现,JNI里所有对应Java方法的C++ 方法都会比Java方法多两个参数,第一个参数是我们很熟悉的JNIEnv*指针,第二个参数有时是jobject有时是个jclass.针对这第二个参数在这