Итак, у меня есть следующий тестовый код:
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]){
int retVal = strcmp("", "");
printf("%d\n", retVal);
return 0;
}
И для меня всегда кажется, что выведите 0, то есть "" и "" всегда равны друг другу.Но мне любопытно.Это что-то гарантирует strcmp, или он может варьироваться от реализации к реализации?Может быть, я просто параноик, но я работал над достаточно странными системами, чтобы знать опасности различных реализаций.
ОБНОВЛЕНИЕ: Я решил уточнить, чтобы оправдать свою паранойю.То, что я действительно делаю в своей программе, более похоже на это:
#include <string.h>
#include <stdio.h>
int doOperation(const char* toCompare){
//do stuff in here
int compResult = strcmp(toCompare, "");
//do more stuff depending on compResult
}
int main(int argc, char* argv[]){
const char* myString = "";
doOperation(myString);
return 0;
}
Я хочу убедиться, что все в doOperation будет работать правильно.Обратите внимание, что это всего лишь пример.В моей функции doOperation я не собираюсь знать, что значение toCompare
.