随笔分类 - c and c++
摘要:以前学生时代,只是完成功能就行,进入公司之后,由于产品的特殊性,需要非常考虑效率,发现有以下几个策略(该文不定时更新): hash%length==hash&(length-1)的前提是length是2的n次方 当 B满足是2的n次方时,有 A%B == A & (B-1) 使用后者的效率比求余操作
阅读全文
摘要:今天看到这个问题,很有意思,记录下来复习有些遗忘的知识点。 先说答案,这句话是必须要的! 如果 a.c 中不写,那么编译器是不是会自动把 .h 文件里面的东西跟同名的 .c 文件绑定在一起?A:不会。 从C编译器角度看,.h和.c皆是浮云,就是改名为.txt、.doc也没有大的分别。换句话说,就是.
阅读全文
摘要:本来这个是只应该出现在运用cpp编程的工程中的,但是,就算是单片机编程,都已经会看到这个了,所以提出来解释一下。 条件编译,属于c/c++共有的,但是由于在有些场合,在c++代码内嵌c语言能使编程更加便利。 使用c语言编译器gcc编译下面代码: 预编译(gcc -E)之后是这样的: 这样可以确定在C
阅读全文
摘要:先测试C语言的const: 不是指针变量的表达式,const放在类型的前后都没关系,但是在指针变量中,const的位置就有讲究了,此时要分清楚是指针变量的值是只读的还是指针所指向的内存空间是只读的。而且,C语言中,const是个假const: 运行结果显示a的值被改变。所以,在C语言中,const不
阅读全文
摘要:C语言中,前置和后置++,--都不能作为左值,而在c++中,前置的++和--可以作为左值,从下面的重载运算符中也可以看出,它们返回的是引用,我不知道为什么这里和c语言中不同,但c++类似的提升还有三目运算符?:,在c中也不可以做左值,但c++中可以。或者是因为c++提出了引用,进而对c做了一定的提升
阅读全文
摘要:今天来分析测试一下这个很多人迷糊的地方,因为有些老师在这个地方讲得有待商榷。 一种常见说法是:无符号和有符号数进行运算时,类型被提升为无符号类型。 这也是我当初听老师讲课时的说法。 test1: ch类型提升为unsigned int,-10的二进制补码是个很大的正整数,减去5大于0,所以输出 这里
阅读全文