El progtwig C no comstackrá

Estoy tomando la introducción a la progtwigción y tengo un profesor que no está muy involucrado. Desafortunadamente, la clase está llena de novatos como yo, así que no hay ayuda allí. Tengo que crear una calculadora de impuestos solo con entrada / salida, declaraciones de asignación y aritmética. Mi amigo realmente me ayudó a arreglar un poco el código y lo compiló antes de enviármelo. No cambié nada, pero no funcionará para mí.

#include  #include  int main() { const double TAX_RATE = 0.075; double item1 = 0, item2 = 0, item3 = 0; printf("Enter the price of the first item: \n"); scanf("%lf", &item1); printf("You entered %.2lf \n", item1); printf("Enter the price of the second item: \n"); scanf("%lf", &item2); printf("You entered %.2lf \n", item2); printf("Enter the price of the third item: \n"); scanf("%lf", &item3); double total = item1 + item2 + item3; double tax = total * TAX_RATE; double totalWithTax = total + tax; printf("You entered %.2lf \n", item3); printf("The total of your items is %.2lf \n", total); printf("The tax is %.2lf \n", tax); printf("The total with tax is %.2lf \n", totalWithTax); system("pause"); } 

Aquí está la salida

 1>------ Build started: Project: assign2, Configuration: Debug Win32 ------ 1> program.c 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(10): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(14): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(18): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : see declaration of 'scanf' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(20): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(21): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(22): error C2143: syntax error : missing ';' before 'type' 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(25): error C2065: 'total' : undeclared identifier 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(26): error C2065: 'tax' : undeclared identifier 1>c:\users\chris\documents\visual studio 2010\projects\assign2\assign2\program.c(27): error C2065: 'totalWithTax' : undeclared identifier ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

En C, las variables menores que C99 deben declararse en la parte superior de la función (antes de otras sentencias de inicialización no variables), por lo que

 const double TAX_RATE = 0.075; double item1 = 0, item2 = 0, item3 = 0; double total, tax, totalWithTax; 

y luego puedes usarlos:

 total = item1 + item2 + item3; tax = total * TAX_RATE; totalWithTax = total + tax; 

En C ++ y en C99 puede declarar variables dentro del código.

Visual C ++ no es totalmente compatible con C99 (solo algunas partes, lea, por ejemplo, https://stackoverflow.com/a/146419/613130 )

Visual C ++ elige el idioma que está utilizando según la extensión de archivo. Su amigo probablemente nombró el progtwig como myprogram.cpp y compiló en su computadora como C ++, mientras que usted nombró el archivo myprogram.c y compiló en su computadora como C.

Para las advertencias … puedes ignorarlas. Microsoft, hace algunos años, comenzó una cruzada contra partes de la biblioteca base de C (las que manejan cadenas y bloques de memoria), declarándolas “inseguras” porque es muy fácil usarlas mal. Introdujo nuevas funciones que tienen algunos parámetros más. Estas funciones no son estándar y específicas de Microsoft. Consulte http://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx .

Puedes usar un

 #define _CRT_SECURE_NO_WARNINGS 

al principio del archivo (antes de #include ) para eliminar las advertencias. No tendrá efectos secundarios si comstack en GCC.