LINUX.ORG.RU

История изменений

Исправление Forum0888, (текущая версия) :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение типа float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой код:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так (с UB).

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

или так (c UB)


#include "stdio.h"

int main(){
    
   char a=200;
   
 printf ("A = %f \n",a);
 
 
    return 0;
}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение типа float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой код:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так.

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

или так (c UB)


#include "stdio.h"

int main(){
    
   char a=200;
   
 printf ("A = %f \n",a);
 
 
    return 0;
}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение типа float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой код:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так.

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

или так


#include "stdio.h"

int main(){
    
   char a=200;
   
 printf ("A = %f \n",a);
 
 
    return 0;
}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой код:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так.

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

или так


#include "stdio.h"

int main(){
    
   char a=200;
   
 printf ("A = %f \n",a);
 
 
    return 0;
}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так.

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

или так


#include "stdio.h"

int main(){
    
   char a=200;
   
 printf ("A = %f \n",a);
 
 
    return 0;
}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Ради интереса попробуйте вот так.

#include "stdio.h"

int main(){
    
 char a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Доскональный ответ можно получить лишь анализируя исходный код функции printf().

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Более полный ответ можно получить анализируя исходный код функции printf().

Исправление Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

#include "stdio.h"

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.

Исходная версия Forum0888, :

Проблема в том, что в printf («A = %f \n»,a); ///Печатает -3.7
Память есть, но в ней не значение float.
То бишь спецификатор для значения float, а в памяти INT.

Можете просто попробовать вот такой UB:

int main(){
    
 float a=200;
   
 printf ("A = %d \n",a);
 
 return 0;

}

Си и C++ верят программисту, даже если код с UB.