рассмотрим следующий фрагмент кода:
int main(){
char hi[5] = "Hi!";
printf("%d", hi[4]);
}
Что будет напечатано?Что еще более важно, В стандарте есть упоминание о том, что будет напечатано , в новейших C ++ стандартах?Если есть упоминание, где это?
По некоторым причинам недавнюю информацию об этом чрезвычайно трудно найти, и различные источники имеют противоречивую информацию.Я пробовал en.cppreference.com и cplusplus.com, у первого не было никакой информации, во втором утверждалось, что значения не определены.Тем не менее,
using namespace std;
int main(){
char mySt[1000000] = "Hi!";
for(int i=0;i<1000000;++i){
if(mySt[i]!='\0') cout << i <<endl;
}
}
Это печатает только 0, 1 и 2 в моей системе, и поэтому я ожидаю, что "rest" будет инициализирован как '\ 0'.Также, насколько мне известно, char mySt[100000]=""
инициализирует весь массив '\0'
, и просто неловко говорить, что он отличается от любого другого строкового литерала.Однако мой инструктор утверждает, что это не так (он утверждает, что он «не определен»), мне нужно подкрепить свою заявку недавними и конкретными доказательствами, если таковые имеются.
Я скомпилирован на MinGW g ++ 8.2.0.Заранее спасибо.
Чтобы уточнить,