相关疑难解决方法(0)

〜操作员做什么?

我最近在代码中看到了上面的运算符,我用Google搜索但没有发现任何内容.代码如下.请说明这个运算符实际上做了什么?

#include<stdio.h>
int main()
{
    unsigned long int i=0;
     char ch;
    char name1[20],name2[20];
    FILE *fp,*ft;
    printf("ENTER THE SOURCE FILE:");
    gets(name1);
    printf("ENTER THE DESTINATION FILE:");
    gets(name2);
    fp=fopen(name1,"r");
    ft=fopen(name2,"w");
    if(fp==NULL)
    {
        printf("CAN,T OPEN THE FILE");
    }
    while(!feof(fp))
    {
         ch=getc(fp);
         ch=~((ch^i));/*<--Here*/
        i+=2;
        if(i==100000)
        {
             i=0;
        }
     putc(ch,ft);
    }
    fclose(fp);
    fclose(ft);
    return 0;
}       
Run Code Online (Sandbox Code Playgroud)

c cryptography

43
推荐指数
3
解决办法
7万
查看次数

-1和~0之间有区别吗?

比较无符号值时,如此测试:

if (pos == (size_t)-1)
Run Code Online (Sandbox Code Playgroud)

这种比较在技术上是否与以下类似:

if (pos == (size_t)~0)
Run Code Online (Sandbox Code Playgroud)

我不习惯第二种变体.这就是我问这个问题的原因.如果是的话,答案可能会相当直截了当.

c c++

18
推荐指数
2
解决办法
2082
查看次数

使用-1作为unsigned(size_t)类型的标志值

我使用-1作为返回类型为size_t(无符号类型)的函数的标志值.

我一开始并没有注意到它,特别是因为它没有导致我的代码中的任何错误(我用x == -1,而不是x <0来检查它).

是否有任何微妙的原因我不应该留下它?什么时候这可能出乎意料?这是常用的吗?

ptrdiff_t不太常见,输入时间较长,而且无论如何它都不是合适的类型,因为函数会将索引返回到数组中.

c c++ d twos-complement

9
推荐指数
2
解决办法
1494
查看次数

标签 统计

c ×3

c++ ×2

cryptography ×1

d ×1

twos-complement ×1