1,类型提升:
在C的表达式中,每个char都被转换为int,每个表达式中的float被转换为double。
由于函数参数也是一个表达式,所以当参数传递给函数时,也会发生类型转换。
如:
sizeof(‘a’);
C结果:4
C++结果:1
printf(“%d”); %d可以适用short,char和int,因为他们都会被转换为int。
2,隐式类型转换是语言中的一种临时手段,起源于简化最初的编译器的想法。
把所有的操作数转换为统一的长度极大地简化了代码的生成。这样压到堆栈中的参数都是同一长度,所以运行时只需要知道参数的数目,而不需要知道它们的长度。
3,编写链表法解决hash,可以先让hash值返回0。
做法:把编程问题分解成几个部分往往是解决它的最快方法。
4,关于强制类型转换:
在C的表达式中,每个char都被转换为int,每个表达式中的float被转换为double。
由于函数参数也是一个表达式,所以当参数传递给函数时,也会发生类型转换。
如:
sizeof(‘a’);
C结果:4
C++结果:1
printf(“%d”); %d可以适用short,char和int,因为他们都会被转换为int。
2,隐式类型转换是语言中的一种临时手段,起源于简化最初的编译器的想法。
把所有的操作数转换为统一的长度极大地简化了代码的生成。这样压到堆栈中的参数都是同一长度,所以运行时只需要知道参数的数目,而不需要知道它们的长度。
3,编写链表法解决hash,可以先让hash值返回0。
做法:把编程问题分解成几个部分往往是解决它的最快方法。
4,关于强制类型转换:
#include <stdio.h>
#include <stdlib.h>
/*
qsort的声明:
void qsort(void base, size_t nel, size_t width, int(*compar)(const void*, const void*));
*/
typedef int(*compar)(const void*, const void*);
int intcompare(const int* i, const int* j)
{
return (*i-*j);
}
void Output(int data[], int n)
{
int i;
for(i = 0 ; i < n ; i++ )
printf("%d ",data[i]);
printf("\n");
}
int main()
{
int data[]={73, 22, 93, 43, 55, 55, 14, 28, 65, 39, 81};
int n=sizeof(data)/sizeof(data[0]);
//注意下面的强制转换。
qsort(data,n,sizeof(data[0]),(compar)intcompare);
Output(data,n);
return 0;
}