1.在函数外声明的变量和有静态存储类型的变量会自动付初值为0,没有静态存储类型的局部变量则是垃圾内容(malloc和realloc动态分配的内存可能是垃圾值。calloc分配的是全0)
2.a[i]=i++; 这样的语句不能工作。 原因:i在同一表达式的不同的地方被引用,会导致无意义的结果,无法判断a[i]中是旧值还是新值( 警告: ‘i’上的运算结果可能是未定义的)
3.(i+=j)+=k; i+=j 返回的是一个复制 不是i,是个匿名变量(在c语言中是。 在c++中是返回的i)
4.i=1; j=i++ + ++i + ++i; 不同编译器的结果不一样 (GNU中 先计算第一个+号两边的数,再对第三个数加) i=4,j=7
5.sizeof('a'); 是4而不是1 原因: C 语言中的字符常数是 int 型, 因此 sizeof(’a’) 是 sizeof(int),
6.printf("%*d", width, x) 就能达到要求 等同于: printf("%8d\n",x);
7.a^b的结果是什么? 答: a^b=|a-b| 异或相同位为0,不同位为1 按位相减的0,按位相减的绝对值为1
8.#include<iostream>
using namespace std;
int foo(int x)
{
int count =0;
while(x)
{
count++;
x=x&(x-1);
}
return count ;
}
int main()
{
cout << foo(9999)<<endl;
return 0;
}
输出8
解:::::func函数的返回值是行参转化为二进制后包含1的数量,
9.int f(int x, int y)
{
return (x&y)+((x^y)>>1);
}
x&y是表示取的是相同位,是x和y相同位的一半,x^y是x和y不同位,>>1是xy不同位除以二
和起来就是x和y和的一半
10.交换两个数字
a=a+b; b=a-b; a=a-b; //a+b可能越界
a=a^b; b=a^b; a=a^b;
11.#pragma pack(n)定义程序 数据的对齐方式
12.const 与#define的区别 : #define只是拷贝,没有类型检查的过程 const强制保护放在代码段里
13.字符串的操作 strcpy strlen strcat strchr(串中查找给定字符的第一个匹配处)
strcmp strerror(指向错误信息字符串的指针) strncmp strncpy strset(将一个串中所有字符都设为制定字符)
strnlen
14.数据库中空值的处理 (空值处理函数) nvl(par1,par2)
当par1的值为NULL,函数返回par2的值
15。三大范式
第一范式 表中的字段不可再分
第二范式 所有的非主属性必须完全依赖于主属性
表中的数据可以被唯一区分
第三范式 在 第二范式的基础上消除了传递依赖
16.
静态成员函数与成员函数的区别,
静态成员函数没有隐藏的this指针。
静态成员函数不恩那个反问非静态的成员
2.a[i]=i++; 这样的语句不能工作。 原因:i在同一表达式的不同的地方被引用,会导致无意义的结果,无法判断a[i]中是旧值还是新值( 警告: ‘i’上的运算结果可能是未定义的)
3.(i+=j)+=k; i+=j 返回的是一个复制 不是i,是个匿名变量(在c语言中是。 在c++中是返回的i)
4.i=1; j=i++ + ++i + ++i; 不同编译器的结果不一样 (GNU中 先计算第一个+号两边的数,再对第三个数加) i=4,j=7
5.sizeof('a'); 是4而不是1 原因: C 语言中的字符常数是 int 型, 因此 sizeof(’a’) 是 sizeof(int),
6.printf("%*d", width, x) 就能达到要求 等同于: printf("%8d\n",x);
7.a^b的结果是什么? 答: a^b=|a-b| 异或相同位为0,不同位为1 按位相减的0,按位相减的绝对值为1
8.#include<iostream>
using namespace std;
int foo(int x)
{
int count =0;
while(x)
{
count++;
x=x&(x-1);
}
return count ;
}
int main()
{
cout << foo(9999)<<endl;
return 0;
}
输出8
解:::::func函数的返回值是行参转化为二进制后包含1的数量,
9.int f(int x, int y)
{
return (x&y)+((x^y)>>1);
}
x&y是表示取的是相同位,是x和y相同位的一半,x^y是x和y不同位,>>1是xy不同位除以二
和起来就是x和y和的一半
10.交换两个数字
a=a+b; b=a-b; a=a-b; //a+b可能越界
a=a^b; b=a^b; a=a^b;
11.#pragma pack(n)定义程序 数据的对齐方式
12.const 与#define的区别 : #define只是拷贝,没有类型检查的过程 const强制保护放在代码段里
13.字符串的操作 strcpy strlen strcat strchr(串中查找给定字符的第一个匹配处)
strcmp strerror(指向错误信息字符串的指针) strncmp strncpy strset(将一个串中所有字符都设为制定字符)
strnlen
14.数据库中空值的处理 (空值处理函数) nvl(par1,par2)
当par1的值为NULL,函数返回par2的值
15。三大范式
第一范式 表中的字段不可再分
第二范式 所有的非主属性必须完全依赖于主属性
表中的数据可以被唯一区分
第三范式 在 第二范式的基础上消除了传递依赖
16.
静态成员函数与成员函数的区别,
静态成员函数没有隐藏的this指针。
静态成员函数不恩那个反问非静态的成员