在c语言中用没有函数判定一个变量的类型,可以使用sizeof来判断变量大小。
我们提供的服务有:网站设计制作、成都做网站、微信公众号开发、网站优化、网站认证、扬州ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的扬州网站制作公司
示例:
#include stdio.h
#include stdlib.h
int main(int argc,char **argv) //主程序
{
//对C语言内置类型的所占字节数的测试
printf("size of char is: %d\n",sizeof(char)); //字符型数据所占字节数 、
printf("size of short is: %d\n",sizeof(short)); //短整形数据所占字节数
printf("size of int is: %d\n",sizeof(int )); //整形数据
printf("size of short int is: %d\n",sizeof(short int)); //短整形
printf("size of long int is: %d\n",sizeof(long int)); //长整形数据
printf("size of float is: %d\n",sizeof(float)); //浮点型数据
printf("size of double is: %d\n",sizeof(double)); //双精度数据
//对字符及字符串数组所占字节数的测量
char a[] ={'a','b','c','d','e'};
printf("size of a[] is: %d\n",sizeof(a)); //输出数组a[]所占字节数
char b[]={"abcde"}; //初始化字符串b
printf("size of b[] is: %d\n",sizeof(b)); //数组b[]
char c[][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'}}; //初始化二维字符型数组
printf("size of c[][] is: %d\n",sizeof(c)); //二维数组c所占字节数
printf("size of c[0] is: %d\n",sizeof(c[0])); //二维数组中的某行所占的字节数,例如第0行
printf("size of c[0][0] is: %d\n",sizeof(c[0][0])); //某行某个元素,例如第0行第0个元素
//对指针所占字节数的测量
char *p=0;
printf("size of *p is: %d\n",sizeof(p)); //字符型指针
system("pause");
return 0;
}
扩展资料
使用sizeof()计算数组长度
将sizeof用于 expr是并没有计算expr的值。特别是在sizeof *p中,指针p可以是一个无效地址,因为不需要对p做解引用操作。
对char类型或值为char类型的表达式做sizeof操作结果为1。对引用类型做sizeof操作,将返回存放此引用类型对象所需的内存空间大小。
对指针做sizeof操作,将返回存放指针所需的内存大小,注意,如果要获取该指针指向对象的大小,则必须对该指针进行解引用。对数组做sizeof操作等效于对其元素做sizeof操作的结果乘上数组元素的个数。
因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果初一sizeof其元素类型的结果,即可求出数组元素的个数:int sz = sizeof(ia)/sizeof(*ia);
通常将8位的块作为一个字节,32位或4个字节作为一个 “字”。一般的short为半个机器字长,int为一个机器字长。
1、首先在c语言中,long long 是C99标准对整形类型做的扩展,每个long long类型的变量占8字节,64位。如下图使用%lld输出。
2、这种输出方法的结果如下图所示,可以看到输出结果是0,而很明显输出的结果不应该为零,也就是说输出结果是错误的。
3、这时要看下是不是函数有问题,采取的方法如下图所示。
4、修正之后的输入结果下图所示,通过这个过程,得出的结论是输出long long类型的数据应该使用prinf的%lld格式,注意输出函数不要写错。
5、最后输出bool类型的数据,其使用Printf的输出格式如下图所示。
6、最后输出结果如下图所示,就完成了。
函数的返回类型是在函数声明的时候给出的,比方如下
int function1(int a, int b); //两个函数的声明
float function2(float a, float b);
main(){ //主函数
int x=8, y=9, z;
float u=3.5, v=2.5, w;
z=function1(x,y);
w=function2(u,v);
}
int function1(int a, int b){ //两个函数的定义
int c;
c=a+b;
return c; //函数返回值必须与函数之前的数据类型一致, 此处c和function1都是int
}
float function2(float a, float b){
float c;
c=a*b;
return c; //函数返回值必须与函数之前的数据类型一致, 此处c和function2都是float
}
一般来说,我们不会直接使用ASCII码来处理,因为这样不够直观。比如你说的判定输入是否是字母,是否是数字,那么有个比较直观的方法来处理。如果你看过ASCII码表,那么你就知道字数和字母在ASCII码表中都是连续的,所以这个就比较好解决了。
判定字符ch是否是数字:
if(ch='0'
ch='9')
判定字符ch是否是字母:
if(ch='a'
ch='z'
||
ch='A'
ch='Z')
当然,有已经定义好的库函数用来判定是否数字和字母,不要加加载头文件ctype.h
判定字符ch是否是数字:
if(isalnum(ch));
判定字符ch是否是字母:
if(isalpha(ch));
这两个函数都是判定成立,结果是true也就是1,判定不成立,结果是false,也就是0.
函数返回值类型由函数头部的返回值类型决定
例如
函数头部为int f(),这样的话,返回值类型为int型;又如头部为double f()的话,返回值类型为double型;头部为char *f()的话,返回值为char *,即指向char的指针
特别的,如果函数头部没有显示的说明返回值类型,则在C中一般是默认当作返回int型,如f(),则返回值类型为int型