正则表达式
int main(int argc,char *argv[],char *envp[])
{
char szBuf[8] = {0};
//scanf("%7s",szBuf);//输入检查 %s无限输入
//scanf("%7[0-9]s",szBuf);//只允许输入0 1 2 3 4 5 6 7 8 9 123a4567从a截断123
//scanf("%7[1,3,5,7,9]s",szBuf);//只允许输1 3 5 7 9
//scanf("%7[0-9,a-z,A-Z]s",szBuf);//只允许输十六进制
//scanf("%7[^?]s",szBuf);不允许?
{
scanf("%7s",szBuf);//输入检查 %s无限输入
puts(szBuf);
fflush(stdin);//清掉缓冲 rewind(stdin) 回文件首位 安全隐患残留问题
}
return 0;
}
关于系统
- xp:0012ff7c
- win10: 0019ff28
- win7:0018ff**
可以知道系统环境
关于补码
int main(int argc,char *argv[],char *envp[])
{
int i = 0;
while(i>0)//退出是7fffFFFF
{
i++;
}
printf("%08x",i);//80000000
system("pause");
return 0;
}
向0取整
向下取整是往负无穷的方向取值
向上取整是往正无效的方向取值
1011011>>3位
数学上是1011.011
计算机上1011.000
c语言是向0取整
int main(int argc,char *argv[],char *envp[])
{
// a/b =q,r
//r =a-qb
printf("%d\r\n",10%3);//1
printf("%d\r\n",10%-3);//1
printf("%d\r\n",-10%3);//-1
printf("%d\r\n",-10%-3);//-1
int i = 50;
while(i >= -5)
{
printf("%d /8 =%d\r\n",i,i/8);
printf("%d >>3 =%d\r\n",i,i/8);//除数相当于右移动
printf("%d\r\n");
i--;
}
return 0;
}
*的秘密
AB
A10101100=A*(10000000+100000+1000+100)=10000000A+100000A+1000A+100A=A<<8+A<<4+A<<3+A<<2
\问题
乘法和移位问题
AB>>n