讓我們以下面的程序(稱爲charco.cpp
與//
有意開始):C++與XOR值比較奇怪的行爲
//
#include <iostream>
#include <stdio.h>
int main()
{
FILE* fp = fopen("charco.cpp", "rt");
char c = fgetc(fp);
if(c == '/')
{
char c2 = fgetc(fp);
if(c2 == 122^85) // *** OK
{
c2 = fgetc(fp);
while(c2 != 246^252) // **** NOT OK
{
c2 = fgetc(fp);
}
}
}
}
在目前的化身,它會永遠循環下去,與**** NOT OK
指示的路線,因爲它將無法行尾字符匹配//
,所以它讀取整個文件後...
但是,如果我改變246^252
到10
,(char)(246^252)
或者只是'\n'
它沒有環路再一次,它匹配正確,但(char)246^252
再次失敗。
任何人都可以解釋爲什麼這種奇怪的行爲? (編譯:G ++ 4.9.2)
除了了iostream包括,這是C. – Borgleader 2015-02-24 14:41:03
這是爲什麼C++問題標記[標籤:C]? – 2015-02-24 14:41:06
爲什麼這個C問題被稱爲C++? – 2015-02-24 14:41:34