1)今天写了一个判断字符串里面有几个int的小程序,发现自己有一些知识还是掌握得不够好:
1. sizeof(arr)-- 计算以字节为单位的数组大小
sizeof (arr[])-- 计算指针大小
一般情况下数组名就是指向首元素的指针,但是这种情况除外。
2. 能不能优化这个程序?希望以后解决这个疑问。
int main(void)
{
int sz = 0;
int count = 0;
int i = 0;
char arr[100];
scanf_s("%s", arr,100);
sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0;i < sz-3;i++)
{
if (arr[i] == 'i')
{
if (arr[i + 1] == 'n')
{
if (arr[i + 2] == 't')
{
count++;
}
}
}
}
printf("%d", count);
return 0;
}
2)发现一些有意思的东西
1.while语句会自动把下一行看成大括号内的内容(仅限一行)
2.这个程序居然是算i的二进制表示里有几个1??理解不能!!
for(j = 0;j<32;j++)
{
if(i&(1<<j))
{
count++;
}
}
不应该是这样吗?看来对位运算符的理解还不够!!
for(i = 0 ; i < 32 ; i ++)
{
if(1&(j>>i)==1)
{
count++
}
}