08-17-2006
imaxdiv is the same function (idea) as div - it just uses the largest possible integer on the platform. Use lldiv if this function gives you heartburn.
You don't print the result struct, you print either the remainder or the quotient.
imaxdiv_t is platform specific - it returns the largest available integer on your platform, and that is what gcc is complaining about, because it is not necessarily long long. If sizeof says quot is a long long on your platform, then just cast. I'm thinking it may not be.
The idea behind imaxdiv was to provide a "portable largest possible integer range implementation of div for any platform." It is part of C99.
Last edited by jim mcnamara; 08-17-2006 at 10:40 AM..
10 More Discussions You Might Find Interesting
1. Programming
What is the output of the following program considering an x86 based parameter passing sequence where stack grows towards lower memory addresses and that arguments are evaluated from right to left:
int i=10;
int f1()
{
static int i = 15;
printf("f1:%d ", i);
return i--;
}
main()
{... (2 Replies)
Discussion started by: arunviswanath
2 Replies
2. Shell Programming and Scripting
How to print output in following format?
A..................ok
AA................ok
AAA..............ok
AAAAAA........ok
"ok" one under one (4 Replies)
Discussion started by: mirusnet
4 Replies
3. UNIX for Dummies Questions & Answers
Hi,
I have just completed my first script (:D) and now i just need to format it with printf.
This is what I have:
#!/bin/ksh
TOTB=0
TOTF=0
TOTI=0
HOST=`hostname`
echo " FSYSTEM BLKS FREE INUSE MOUNTEDON"
df -m | grep -v ":"|grep -v Free|grep -v "/proc"| while read FSYSTEM... (2 Replies)
Discussion started by: compan023
2 Replies
4. Shell Programming and Scripting
I am having a major problem with printf, The more I pad it, the less I see :(
The problem is in the first function, report
Am I ruining output somewhere? I wont print out the names propely, it cuts them off or deletes them completely :(
#!/bin/bash
report()
{
printf "%-10s" STUD# ... (2 Replies)
Discussion started by: L0ckz0r
2 Replies
5. Programming
hello all, i came accross an aptitude question ..
int
main()
{
int a = 10, b = 20, c = 30;
printf("%d\t%d\t%d");
}
it gives output
30 20 10
what is the reason of such behaviour of printf().
thank you. (7 Replies)
Discussion started by: zius_oram
7 Replies
6. UNIX for Dummies Questions & Answers
I am playing with function fork() (creating few processes)and trying to put some output (with process id,child id and so on) to the shell and sometimes i get output for 2 proccesses mixed up on same line. sometimes I would get something like this...
myShell$ ./a.out
proccess1 ... (2 Replies)
Discussion started by: joker40
2 Replies
7. Shell Programming and Scripting
Hi, I have a scripting assignment for an intro to linux class and I'm really confused about how to do something seemingly simple.
I am supposed to Print the name of each file in the /data/dir16/subdir1 directory in the following format: "My name is: bin"
The desired output example looks like:... (1 Reply)
Discussion started by: danschmidt
1 Replies
8. UNIX for Dummies Questions & Answers
Hello,
I have some issue with qsub and the standard output : I launch a script that "echoes" the string "abc" and then executes a C program in which I print informations with the printf function ; the .o file contains "abc" but not the information displayed by printf. I also tried... (0 Replies)
Discussion started by: Shaderw
0 Replies
9. Shell Programming and Scripting
The printf statement
pay_amount=$(printf "%013.3f" "$4")
working perfectly at one path(xxx/home/rsh) and showing error (printf: 216.000: invalid number) at another path(/opt/xxxx/xxxx).
what will be the reason?
thanks in advance (4 Replies)
Discussion started by: reeta_shri
4 Replies
10. Programming
Hi,
Could anyone explain me the logic behind the following program's output?
int main() {
printf("%d\n", printf("%d %d", 2, 2) & printf("%d %d", 2, 2));
printf("%d\n", printf("%d %d\n", 2, 2) & printf("%d %d\n", 2, 2));
}
Ans:
2 22 23
2 2
2 2
4 (2 Replies)
Discussion started by: royalibrahim
2 Replies
DIV(3) Linux Programmer's Manual DIV(3)
NAME
div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an integer division
SYNOPSIS
#include <stdlib.h>
div_t div(int numerator, int denominator);
ldiv_t ldiv(long numerator, long denominator);
lldiv_t lldiv(long long numerator, long long denominator);
#include <inttypes.h>
imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
lldiv():
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc -std=c99
DESCRIPTION
The div() function computes the value numerator/denominator and returns the quotient and remainder in a structure named div_t that contains
two integer members (in unspecified order) named quot and rem. The quotient is rounded toward zero. The result satisfies quot*denomina-
tor+rem = numerator.
The ldiv(), lldiv(), and imaxdiv() functions do the same, dividing numbers of the indicated type and returning the result in a structure of
the indicated name, in all cases with fields quot and rem of the same type as the function arguments.
RETURN VALUE
The div_t (etc.) structure.
ATTRIBUTES
Multithreading (see pthreads(7))
The div(), ldiv(), lldiv(), and imaxdiv() functions are thread-safe.
CONFORMING TO
SVr4, 4.3BSD, C89. C99. The functions lldiv() and imaxdiv() were added in C99.
EXAMPLE
After
div_t q = div(-5, 3);
the values q.quot and q.rem are -1 and -2, respectively.
SEE ALSO
abs(3), remainder(3)
COLOPHON
This page is part of release 3.53 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2013-07-05 DIV(3)