hi,

well this is my first post on this great forum, hope to be a good boy :)

i m writing a programm that adds numbers from 0 to any numer entered by the user .

for Example :

- if the user enter 4, the sum will be 10 = 0+1+2+3+4.
- if 10 --> the sum is : 1+2+3+4...+10 = 64 .

i make the code like that :

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int number;
    int sum;
    int i;

    printf("please enter the end number : \n" );
    scanf("%i", &number);

    for ( i = 0; i <= number; i++ ) {

        sum += i;

    }
    printf("the sum is : %i\n", sum);
    return 0;


}

the result :

the sum is : 2293586 when i enter 4 :-/ i don t know why .

any ideas how to make this work

Thanks.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int number;
    int sum;
    int i;
 
    printf("please enter the end number : \n" );
    scanf("%u", &number);
 
    for ( i = 0, sum = 0; i <= number; i++ ) {
        sum += i;
    }

    printf("the sum is : %i\n", sum);

    return 0;
}

thank you very much mathematician for this quick answer but i have small question why did you use %u in the place of %i i mean it works with %i too .

thanks again ;)

for ( i = 0; i <= number; i++ ) {
        sum =sum+ i;
}

try this code...

Edited 3 Years Ago by Reverend Jim: Fixed formatting

thank you very much mathematician for this quick answer but i have small question why did you use %u in the place of %i i mean it works with %i too .

thanks again ;)

Well firstly, unless it is compiler specific, I have never seen %i before. A decimal integer is usually %d.

Secondly, given what you are doing, you presumably want the user to enter a positive (unsigned) integer (%u).

Comments
(1) %i is not compiler specific. (2) don't presume anything.

thanks james14 it works too ( well i m a beginner i coudn t figure it out :) )

thanks ;)

Well firstly, unless it is compiler specific, I have never seen %i before. A decimal integer is usually %d.

Secondly, given what you are doing, you presumably want the user to enter a positive (unsigned) integer (%u).

well we always do this, we work just with %i if its an integer and it works

but the idea to use %ufor the positive numbers is great :)
thank you mathematecian for solving this .

well if sum doesn t initialised it wouldnt work !

for(i = 0, sum = 0; i <= number; i++)

will be correct ;)

thanks :)

Edited 3 Years Ago by Reverend Jim: Fixed formatting

mrayoub:

%i and %d are equivalent. both of them specify the format for a signed decimal integer, and either are acceptable to use.

%u, as you have seen, is for unsigned decimal integer

however, if you have declared a variable of type int then you should not print it as %u, an unsigned int. That is a bad practice to get into... because while it may in many cases appear to work correctly, your integer may very well have a valid negative value , and the %u format will print an incorrect value.

if you want the variable to be unsigned, then make it unsigned by declaring it so: unsigned number; .

thank you very much jephthah this was really helpful, well programming in C has to be very specific ;) .

i got more informations now trough this post .Really nice to join you !

Comments
yes, C is very structured. nowhere near as loose as some other languages.

%i and %d are equivalent. both of them specify the format for a signed decimal integer, and either are acceptable to use

just as an afterthought, i should clarify that the above statement is only strictly true for "printf()"

for "scanf()", the %d and %i are subtly different ... %d requires a decimal (base 10) integer input, while %i assumes decimal by default, but will also read number as octal if it is prefixed by '0', or hexadecimal if prefixed by '0x' or '0X'

This question has already been answered. Start a new discussion instead.